簡體   English   中英

由於外鍵,無法在現有列上添加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煩惱。

FK困擾您的更改的原因是因為您試圖更改它並在約束中使用它,請記住您能夠更改數據類型。

因此,如果要對FK進行更改,請檢查答案(如果要在生產環境中進行更改,請記住先鎖定表)。

(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;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM