由于外键,无法在现有列上添加AUTO_INCREMENT

时间:2015-03-26 13:59:34

标签: mysql sql database foreign-keys foreign-key-relationship

我有主键列,它有一些外部外键引用。很平常。我忘了为它添加AUTO_INCREMENT。现在我执行

ALTER TABLE chat.users CHANGE COLUMN user_id user_id INT(11) NOT NULL AUTO_INCREMENT ;

(PRIMARY KEY单独定义)

它讲述了关于fk的一些事情 ERROR 1833: Cannot change column 'user_id': used in a foreign key constraint 'fk_chats_users' of table 'chat.chats'

我无法弄清楚为什么fk会对它的引用感兴趣?引用AUTO_INCREMENT。

2 个答案:

答案 0 :(得分:3)

FK对您的更改感到困扰的原因是您尝试更改它并在约束中使用,请记住您可以更改数据类型。

因此,如果您想对FK进行更改,请检查this answer(如果您在生产环境中进行更改,请记得锁定表格。)

答案 1 :(得分:-1)

  

(PRIMARY KEY单独定义)

如果您已经在列上定义了主键,那么我认为不需要修改列并向其添加auto_increment。主键默认自动递增。

但是,如果要在其上设置auto_increment功能,请尝试这样:

--Drop foreign key
ALTER TABLE chat.users DROP FOREIGN KEY fk_chats_users;
--Alter your primary key
ALTER TABLE person modify user_id INT(11) not null auto_increment;
--Recreate foreign key
ALTER TABLE chat.users ADD CONSTRAINT fk_chats_users FOREIGN KEY (user_id) REFERENCES chat.users(user_id) ON DELETE CASCADE;