在詢問包括本網站上的這個問題之前,我已經徹底研究過了。使用外鍵創建mysql表時出錯
我有一個學生表:
CREATE TABLE IF NOT EXISTS students(
student_id INT UNSIGNED NOT NULL AUTO_INCREMENT,
first_name VARCHAR(20) NOT NULL,
middle_name VARCHAR(20),
last_name VARCHAR(40) NOT NULL,
email VARCHAR(60) NOT NULL,
password CHAR(40) NOT NULL,
reg_date DATETIME NOT NULL,
PRIMARY KEY (student_id),
UNIQUE (email));
我也有一個主題表:
CREATE TABLE IF NOT EXISTS subjects(
subject_id INT UNSIGNED NOT NULL AUTO_INCREMENT,
subject_name VARCHAR(40) NOT NULL,
level_of_entry VARCHAR(20) NOT NULL,
exam_board VARCHAR(20) NOT NULL,
PRIMARY KEY (subject_id));
我現在創建一個錶鏈接上面的表格:
CREATE TABLE IF NOT EXISTS entries(
exam_date DATETIME NOT NULL,
FOREIGN KEY (student_id) REFERENCES students (student_id),
FOREIGN KEY (subject_id) REFERENCES subjects (subject_id)
);
我的問題是,當我嘗試在第三個表中聲明外鍵時,我得到一個錯誤,指出s ubject_id外鍵不在引用的表中。 錯誤1072(42000):表格中不存在鍵列'student_id',即使它明確包含在學生表內,同樣適用於'subject_id'和主題表。 我確定我的聲明外鍵的語法是正確的,所以我不確定如何解決這個問題。 所有幫助表示讚賞。謝謝。
我想你忘了在'entries'表中添加'student_id'和'subject_id'列。現在,'entries'表只有一列'exam_date'。你試圖在一個不存在的列上的這個'entries'表中映射一個外鍵,這個列沒有被定義 – Delphine
@Delphine所以我需要像在創建student_id和subject_id列一樣,兩張桌子? – MMM
沒錯。外鍵訂單不會創建列。您必須創建它並在應用外部約束之後。要小心數據類型和長度,但是,如果你按照你的方式和主題聲明瞭這兩列,那將是完美的! PS:我發佈它作爲答案 – Delphine