欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

mysql增加外鍵老是不成功

呂致盈1年前9瀏覽0評論

如果你在使用MySQL數據庫時增加外鍵老是不成功,可能出現某些常見的問題。下面我們逐一進行分析。

1. 數據類型不匹配

創建表:
CREATE TABLE tb_student (
id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50) NOT NULL,
age TINYINT UNSIGNED NOT NULL,
sex ENUM('男', '女') NOT NULL,
grade_id TINYINT UNSIGNED NOT NULL
);
創建外鍵:
ALTER TABLE tb_student ADD CONSTRAINT fk_student_grade_id FOREIGN KEY (grade_id) REFERENCES tb_grade(id);

以上代碼拋出的錯誤信息為:ERROR 1215 (HY000): Cannot add foreign key constraint

這是因為,我們在創建tb_student表時,沒有先創建tb_grade表,所以MySQL并不知道這個外鍵grade_id引用了哪個表,也就無法建立聯系。

2. 外鍵名字不匹配

創建表:
CREATE TABLE tb_student (
id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50) NOT NULL,
age TINYINT UNSIGNED NOT NULL,
sex ENUM('男', '女') NOT NULL,
grade_id TINYINT UNSIGNED NOT NULL
);
CREATE TABLE tb_grade (
id TINYINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
name CHAR(2) NOT NULL
);
創建外鍵:
ALTER TABLE tb_student ADD CONSTRAINT fk_grade_id FOREIGN KEY (grade_id) REFERENCES tb_grade(id);

以上代碼拋出的錯誤信息為:ERROR 1215 (HY000): Cannot add foreign key constraint

這是因為,我們在創建外鍵時,外鍵名字“fk_grade_id”與實際表中定義的“fk_student_grade_id”不一致。

3. 主鍵和外鍵類型不匹配

創建表:
CREATE TABLE tb_student (
id VARCHAR(10) NOT NULL PRIMARY KEY,
name VARCHAR(50) NOT NULL,
age TINYINT UNSIGNED NOT NULL,
sex ENUM('男', '女') NOT NULL,
grade_id TINYINT UNSIGNED NOT NULL
);
CREATE TABLE tb_grade (
id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
name CHAR(2) NOT NULL
);
創建外鍵:
ALTER TABLE tb_student ADD CONSTRAINT fk_student_grade_id FOREIGN KEY (grade_id) REFERENCES tb_grade(id);

以上代碼拋出的錯誤信息為:ERROR 1215 (HY000): Cannot add foreign key constraint

這是因為,我們在tb_student表中定義的主鍵id為VARCHAR類型,而tb_grade表中定義的id為INT類型,兩者類型不匹配,無法建立外鍵。

總結:增加外鍵不成功,往往是因為表的創建或外鍵定義出現了問題。需要仔細檢查相應的代碼,找出問題所在,并進行修正。