暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

【磐维数据库 - dtp迁移工具】panwei -> mysql 迁移,保存任务时提示索引名超长

原创 Darcy 2025-03-09
235

背景

  • 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)长度超过目标库的对象名长度限制,迁移时可能会截断或报错!

分析

  1. 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
  1. dtp迁移不涉及索引
  • panwei -> mysql 全量迁移,仅支持迁移数据;
  • 对象树没加载 index,仅加载了 table,所以不存在是否勾选了索引这个问题。

综上所述,虽然 MySQL 对索引名长度有限制,提示的索引也确实超过了64个字符,但因为迁移实际并不涉及索引,所以不应该报上面的提示。

复现用例

  1. 磐维
\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
  1. MySQL
use zc_test; CREATE TABLE test_0208( id int, name text );
  1. 保存任务报同样提示(是否勾选增量没有影响):
    image.png

  2. 完成迁移后,在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进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

文章被以下合辑收录

评论