在使用MySQL創建表時,有時候會出現錯誤提示1824,這是什么原因呢?本文將為您解析這個錯誤及其解決方法。
mysql>CREATE TABLE student ( ->id INT NOT NULL PRIMARY KEY, ->name VARCHAR(20) NOT NULL, ->age INT, ->sex CHAR(1) ->) ENGINE=InnoDB DEFAULT CHARSET=utf8; ERROR 1824 (HY000): Failed to open the referenced table 'student' in the foreign key definition.
上面的代碼創建了一個包含學生編號、姓名、年齡和性別的表,使用InnoDB引擎,字符集為UTF-8。但是在執行CREATE TABLE語句時,會提示錯誤1824,表示在外鍵定義中無法打開引用的表'student'。
造成這個錯誤的原因是,在為student表定義外鍵時,該表還不存在。MySQL無法在引用外部表時找到相應的表,進而報錯。
解決方法也很簡單,只需要將定義外鍵的語句移到student表創建完畢之后再執行即可,如下:
mysql>CREATE TABLE student ( ->id INT NOT NULL PRIMARY KEY, ->name VARCHAR(20) NOT NULL, ->age INT, ->sex CHAR(1) ->) ENGINE=InnoDB DEFAULT CHARSET=utf8; mysql>CREATE TABLE score ( ->id INT NOT NULL PRIMARY KEY, ->course VARCHAR(20), ->grade INT NOT NULL, ->student_id INT, ->FOREIGN KEY (student_id) REFERENCES student(id) ->) ENGINE=InnoDB DEFAULT CHARSET=utf8;
這樣就可以成功地創建兩個表,其中score表的外鍵引用了student表的id字段。