ERROR 1833 (HY000): 无法更改 MySQL 列
·
回答问题
我正在尝试将自动增量添加到人员表的主键person_id中。但是,当我运行命令时,出现以下错误。
错误 1833 (HY000): 无法更改列 'person_id': 用于表 'bank.favorite_food' 的外键约束 'fk_fav_food_person_id'
对于以下命令。我使用的是 MySQL 5.7.20
mysql> ALTER TABLE person MODIFY person_id SMALLINT UNSIGNED AUTO_INCREMENT;

Answers
因为外键必须与它们引用的列的数据类型相匹配,所以更改列的数据类型可能会扰乱引用它的外键是有道理的。
MySQL 似乎对此有防范措施,并拒绝修改该列的尝试。但是检查您所做的特定修改是否会改变数据类型还不够聪明。它只是拒绝任何修改该列的尝试。
您可以通过暂时禁用外键检查来解决此问题。我重新创建了您的表格并确认了它:
mysql> ALTER TABLE person MODIFY person_id SMALLINT UNSIGNED AUTO_INCREMENT;
ERROR 1833 (HY000): Cannot change column 'person_id': used in a foreign key constraint 'favorite_food_ibfk_1' of table 'test.favorite_food'
mysql> set foreign_key_checks=0;
Query OK, 0 rows affected (0.00 sec)
mysql> ALTER TABLE person MODIFY person_id SMALLINT UNSIGNED AUTO_INCREMENT;
Query OK, 0 rows affected (0.08 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> set foreign_key_checks=1;
更多推荐



所有评论(0)