簡體   English   中英

MySQL錯誤代碼1215:無法在ALTER TABLE上添加外鍵約束:Mysql

[英]MySQL Error Code 1215: Cannot add foreign key Constraint on ALTER TABLE : Mysql

我想在現有表(類型InnoDB)上添加外鍵約束,我下面列出了兩個表:

tbl_users : [ user_id(INT,AUTO_INCREMENT), user_name,--- etc]
tbl_users_meta : [ user_meta_id(INT,AUTO_INCREMENT), user_id(INT),--- etc]

我已經在下面列出的“ tbl_users_meta ”上創建了索引“ user_id ”:

在此處輸入圖片說明

這是我的查詢,但是我每次都得到(MySQL Error Code 1215:)。我能得到什么問題?

ALTER TABLE `tbl_users_meta` 
ADD  CONSTRAINT `fk users user_id`
FOREIGN KEY (`user_id`) REFERENCES 
`sanskrut`.`tbl_users`(`user_id`)
ON DELETE NO ACTION ON UPDATE CASCADE;

嘗試使用與您編寫的相同查詢進行的小修改:

ALTER IGNORE TABLE `tbl_users_meta` 
ADD  CONSTRAINT `fk users user_id`
FOREIGN KEY (`user_id`) REFERENCES 
`sanskrut`.`tbl_users`(`user_id`)
ON DELETE NO ACTION ON UPDATE CASCADE;

希望能成功

我看不到您編寫的內容有什么問題,因此必須有一些尚未發布的內容會影響該問題。 例如,在MySQL 5.5.44版上,我可以成功執行以下命令:

CREATE DATABASE sanskrut;
USE sanskrut;
CREATE TABLE tbl_users (user_id INT AUTO_INCREMENT PRIMARY KEY, user_name VARCHAR(50));
CREATE TABLE tbl_users_meta (user_meta_id INT AUTO_INCREMENT PRIMARY KEY, user_id INT);
CREATE INDEX user_id ON tbl_users_meta (user_id);
ALTER TABLE `tbl_users_meta` 
ADD  CONSTRAINT `fk users user_id`
FOREIGN KEY (`user_id`) REFERENCES 
`sanskrut`.`tbl_users`(`user_id`)
ON DELETE NO ACTION ON UPDATE CASCADE;

...以您的確切問題陳述結尾,進行復制和粘貼,並且效果很好。

正如我在評論中提到的那樣,我懷疑存在索引丟失或數據類型不匹配的情況。 您可能會發現添加以下內容的輸出會有所幫助:

DESC tbl_users;
DESC tbl_users_meta;
SHOW indexes FROM tbl_users;
SHOW indexes FROM tbl_users_meta;

...對你的問題。

暫無
暫無

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

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