我想运行以下sql查询:
ALTER TABLE USER MODIFY USER_ID int UNSIGNED NOT NULL AUTO_INCREMENT但是USER_ID是另一个表上的外键。更改此列的最佳方法是什么?
这是我得到的错误:
Error Code: 1833. Cannot change column 'USER_ID': used in a foreign key constraint 'order_detail_ibfk_1' of table 'test.order_detail'发布于 2016-08-05 17:15:10
这必须是multistep
ALTER TABLE other_table DROP FOREIGN KEY fk_name
ALTER TABLE other_table MODIFY USER_ID int UNSIGNED NOT NULL
ALTER TABLE USER MODIFY USER_ID int UNSIGNED NOT NULL AUTO_INCREMENT
ALTER TABLE other_table ADD FOREIGN KEY ...在MySQL 5.7中,服务器禁止对可能导致丢失引用完整性的外键列进行更改。它还禁止更改这类可能不安全的列的数据类型。例如,允许将VARCHAR(20)更改为VARCHAR(30),但不允许将其更改为VARCHAR(1024),因为这会改变存储单个值所需的长度字节数。一种解决方法是使用ALTER TABLE ...在更改列定义和ALTER TABLE之前删除外键...之后添加外键。
https://stackoverflow.com/questions/38785347
复制相似问题