在創建數據庫表建立外鍵是遇到了如下報錯
1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'position(position_id)
)' at line 8
數據庫表sql如下:
--職位表
CREATE TABLE position (position_id INT AUTO_INCREMENT PRIMARY KEY,position_name VARCHAR(50) NOT NULL
);
---------------------------------------------------------------
--部門表
CREATE TABLE department (department_id INT AUTO_INCREMENT PRIMARY KEY,department_name VARCHAR(255) NOT NULL
);
----------------------------------------------------------------
--協會干部表
CREATE TABLE cadres (id INT AUTO_INCREMENT PRIMARY KEY,cadres_name VARCHAR(255) NOT NULL,department_id INT,position_id INT NOT NULL,cadres_session INT NOT NULL,FOREIGN KEY (department_id) REFERENCES department(department_id) ON DELETE SET NULL,FOREIGN KEY (position_id) REFERENCES position(position_id)
);
查閱資料說1064報錯一般是因為單詞打錯了,但是我檢查了好幾遍都沒問題。
最終1064語法錯誤還有可能是因為使用保留關鍵字
position
?是 MySQL 的保留關鍵字,直接使用它作為表名或列名會導致語法錯誤。
這就是我出錯的原因。了避免這個問題,你可以使用反引號()將?
position` 表名括起來,這樣 MySQL 就會將其視為普通的表名,而不是保留關鍵字。以下是修改后的 SQL 代碼:
CREATE TABLE cadres (id INT AUTO_INCREMENT PRIMARY KEY,cadres_name VARCHAR(255) NOT NULL,department_id INT,position_id INT NOT NULL,cadres_session INT NOT NULL,FOREIGN KEY (department_id) REFERENCES department(department_id) ON DELETE SET NULL,FOREIGN KEY (position_id) REFERENCES `position`(position_id)
);