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

Can't add AUTO_INCREMENT on existing column because of foreign key

我有主键列,其中有一些外部外键引用。很平常。我忘了为它添加 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。

(PRIMARY KEY was defined separately)

如果您已经在您的列上定义了主键,那么我认为没有必要修改您的列并向其添加 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;

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

因此,如果您想对 FK 进行更改,请检查 this 答案(如果您在生产环境中进行更改,请记住在之前锁定表)。