自学内容网 自学内容网

1064 - You have an error in your SQL syntax;

在创建数据库表建立外键是遇到了如下报错

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)
);


原文地址:https://blog.csdn.net/weixin_72563504/article/details/145580726

免责声明:本站文章内容转载自网络资源,如侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!