背景
- dtp-------dtp 3.0.1_B01 build at 20240930
- 源库------panwei 3.0.2_B02
- 目标库----MySQL5.7.30
问题
panwei -> mysql 全量+增量迁移,保存任务时提示:
存在对象名(tb0_contract_account_bill_info_contract_account_bill_info_contract_id_idx)长度超过目标库的对象名长度限制,迁移时可能会截断或报错!
分析
- mysql 对索引名称长度的限制
- 手动在mysql端建该索引,也报超长错误:
mysql> CREATE INDEX tb0_contract_account_bill_info_contract_account_bill_info_contract_id_idx on test_0208(id);
ERROR 1059 (42000): Identifier name 'tb0_contract_account_bill_info_contract_account_bill_info_contract_id_idx' is too long
- 经查询,mysql端,索引名称的最大长度为64个字符:
mysql> CREATE INDEX 1_________2_________3_________4_________5_________6_________abcde on test_0208(id);
ERROR 1059 (42000): Identifier name '1_________2_________3_________4_________5_________6_________abcde' is too long
mysql>
mysql> CREATE INDEX 1_________2_________3_________4_________5_________6_________abcd on test_0208(id);
Query OK, 0 rows affected (0.01 sec)
Records: 0 Duplicates: 0 Warnings: 0
- dtp迁移不涉及索引
- panwei -> mysql 全量迁移,仅支持迁移数据;
- 对象树没加载 index,仅加载了 table,所以不存在是否勾选了索引这个问题。
综上所述,虽然 MySQL 对索引名长度有限制,提示的索引也确实超过了64个字符,但因为迁移实际并不涉及索引,所以不应该报上面的提示。
复现用例
- 磐维
\c - zc
\c zc_test
CREATE SCHEMA zc_test;
CREATE TABLE zc_test.test_0208(
id int,
name text
);
CREATE INDEX tb0_contract_account_bill_info_contract_account_bill_info_contract_id_idx on zc_test.test_0208(id);
insert into zc_test.test_0208 values (1, 'a');
insert into zc_test.test_0208 values (2, 'b');
select * from zc_test.test_0208;
\d+ zc_test.test_0208
- MySQL
use zc_test;
CREATE TABLE test_0208(
id int,
name text
);
-
保存任务报同样提示(是否勾选增量没有影响):

-
完成迁移后,在mysql端检查,索引没有迁移(符合预期):
mysql> select * from test_0208;
Empty set (0.01 sec)
mysql> select * from test_0208;
+------+------+
| id | name |
+------+------+
| 1 | a |
| 2 | b |
+------+------+
2 rows in set (0.00 sec)
mysql> SHOW INDEX FROM test_0208;
Empty set (0.00 sec)
规避
实测该提示未影响迁移,可忽略。
解决
升级 dtp。经测试 PanWeiDB_V2.0-dtp3.1.0_B01 built at 20241219 已无该问题。
参考
https://dev.mysql.com/doc/refman/8.0/en/identifier-length.html
最后修改时间:2025-03-16 18:44:53
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




