文档首页/
数据库和应用迁移 UGO/
用户指南/
语法转换指南/
转换错误码/
MySQL To GaussDB 转换错误码/
U0400011:GaussDB自动增长列必须是主键约束或唯一约束的第一个字段
更新时间:2025-06-04 GMT+08:00
U0400011:GaussDB自动增长列必须是主键约束或唯一约束的第一个字段
描述
数据库类型与版本
- 源库类型与版本:MySQL 5.5、5.6、5.7、8.0版本。
- 目标库类型与版本:GaussDB集中式版V2.0-3.1版本开始。
语法示例
GaussDB集中式版V2.0-3.1版本的B兼容模式开始支持AUTO_INCREMENT属性,因此迁移到GaussDB集中式版时,V2.0-3.1版本之前默认转换成自定义序列的形式,并将列的默认值设置成序列值,通过序列来生成列的数据,V2.0-3.1版本开始将保留AUTO_INCREMENT属性不转换。但是如果识别到自动增长列不是主键约束或唯一约束的第一个字段,将生成此错误提示。
如下示例在GaussDB集中式版V2.0-3.1及以后的版本中不支持。
CREATE TABLE auto_increment_test ( id INT AUTO_INCREMENT, name VARCHAR(64) );
改造建议
如果迁移后的AUTO_INCREMENT列不是主键约束或者唯一约束的第一个字段,用户需要根据业务场景进行修改,如下是一些可能的方案:
- 将AUTO_INCREMENT列单独定义成主键或唯一键,或者将AUTO_INCREMENT列添加到已有主键约束或者唯一约束的第一列中。此时将修改原有的数据完整性约束。
- 注释掉AUTO_INCREMENT列,此时需要通过业务保证数据正确性。
- 将AUTO_INCREMENT列修改成序列整型,序列整型与AUTO_INCREMENT的区别参考U0400010,更多详情请参考《GaussDB开发者指南》。