我正在尝试将自动递增添加到 person 表的主键 person_id
中。但是,当我运行命令时,出现以下错误。
ERROR 1833 (HY000): Cannot change column 'person_id': used in a foreign key constraint 'fk_fav_food_person_id' of table 'bank.favorite_food'
对于以下命令。我使用的是 MySQL 5.7.20
mysql> ALTER TABLE person MODIFY person_id SMALLINT UNSIGNED AUTO_INCREMENT;
最佳答案
因为外键必须匹配它们引用的列的数据类型,所以更改列的数据类型很可能会扰乱引用它的外键是有道理的。
看来 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;
关于mysql - 错误 1833 (HY000) : Cannot change column MySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48140154/