2014-12-21 47 views
1

MySQL的:不能在MySQL中添加外鍵約束

CREATE SCHEMA IF NOT EXISTS otes_db; 

USE otes_db; 

CREATE TABLE IF NOT EXISTS school(
    school_code CHAR(3), 
    school_desc VARCHAR(255) NOT NULL, 
    school_head INT UNSIGNED NOT NULL, 
    PRIMARY KEY(school_code), 
    FOREIGN KEY(school_head) REFERENCES user(user_id) 
    ON DELETE CASCADE 
    ON UPDATE CASCADE 
)ENGINE=INNODB; 

CREATE TABLE IF NOT EXISTS user(
    user_id INT UNSIGNED, 
    user_lname VARCHAR(255) NOT NULL, 
    user_fname VARCHAR(255) NOT NULL, 
    user_mname VARCHAR(255), 
    user_email VARCHAR(255) UNIQUE NOT NULL, 
    user_password VARCHAR(255) NOT NULL, 
    user_type ENUM('CEO', 'VP', 'HEAD', 'CHAIR', 'STUD') NOT NULL, 
    user_isActivated ENUM('Y', 'N') DEFAULT 'N', 
    PRIMARY KEY(user_id) 
); 

基於this thread,我已檢查了以下內容:

  • InnoDB引擎設置在school
  • 的引用鍵是主鍵(user_id
  • 數據類型相同( INT UNSIGNED

不過,我仍然得到錯誤與school_headuser_id。我錯過了什麼?

+2

您需要在*創建表'school'之前創建表'user' *。另外'user'是一個保留關鍵字,你需要引用它(最好找到一個不同的名字,這不是一個保留字) –

+0

如果你可以讓這個答案,我會upvote並接受它。也感謝關於'user'的提示(這就是爲什麼它總是以藍色突出顯示)。 – silver

回答

0

您需要先創建用戶表