暂无图片
pt-online-schema-change 中的dsn,使用报错,版本3.1,db-5.7
我来答
分享
暂无图片 匿名用户
pt-online-schema-change 中的dsn,使用报错,版本3.1,db-5.7

主:100.29

从:100.40


pt-online-schema-change h=192.168.100.29,P=3307,u=root,p=123,D=sbtest,t=t1 --recursion-method "dsn=D=percona,t=dsns " --alter "modify column name varchar(20)" --execute


DBD::mysql::db selectcol_arrayref failed: Incorrect table name 'dsns ' [for Statement "SELECT dsn FROM `percona`.`dsns ` ORDER BY id"] at /usr/bin/pt-online-schema-change line 4899.

pt-online-schema-change 3.1.0

mysql --5.7

mysql> show tables;
+-------------------+
| Tables_in_percona |
+-------------------+
| checksums |
| dsns |
| kill_log |
| t_arch |
| t_arch_bak |
+-------------------+
5 rows in set (0.10 sec)

mysql> select * from dsns;
+----+-----------+--------------------------------------+
| id | parent_id | dsn |
+----+-----------+--------------------------------------+
| 2 | NULL | h=192.168.100.40,u=root,p=123,P=3307 |
+----+-----------+--------------------------------------+

我来答
添加附件
收藏
分享
问题补充
3条回答
默认
最新
shunwahⓂ️

这个错误信息来自 Perl 的 DBD::mysql 模块,并指出在执行 SQL 查询时出现了问题。具体来说,错误是在尝试从 percona.dsns 表中选择 dsns 列并按照 id 排序时发生的。
这里的问题是表名 dsns 后面多了一个空格,导致数据库无法识别正确的表名。

暂无图片 评论
暂无图片 有用 5
yBmZlQzJ

1

暂无图片 评论
暂无图片 有用 0
yBmZlQzJ

这个错误信息表示在执行pt-online-schema-change工具时,遇到了一个数据库表名的问题。具体来说,它试图从名为dsns 的表中选择数据,但是该表名存在空格,导致查询失败。

要解决这个问题,你可以采取以下步骤:

  1. 检查数据库中是否存在名为dsns 的表。如果存在,请确保表名没有多余的空格。可以使用以下SQL语句来查找表名:

            

    sql复制代码

    SELECT table_name FROM information_schema.tables WHERE table_schema = 'percona';

  2. 如果表名确实存在但有多余的空格,你可以使用以下SQL语句来重命名表:

            

    sql复制代码

    ALTER TABLE dsns RENAME TO dsns_;

  3. 确保在执行pt-online-schema-change命令时,使用了正确的表名。将命令中的表名更改为正确的表名(例如,将dsns 更改为dsns_)。

  4. 重新运行pt-online-schema-change命令,问题应该得到解决。

请注意,上述解决方案假设你有足够的权限来访问和修改数据库表。如果你没有足够的权限,可能需要联系数据库管理员或具有相应权限的用户来解决问题

暂无图片 评论
暂无图片 有用 1
回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
暂无图片墨值悬赏