MySQL执行CREATE TABLE建表报ERROR 1064语法错误如何解决?
错误原因
- 核心问题是使用了MySQL的保留关键字作为自定义标识符(表名、字段名),MySQL解析SQL时无法将其识别为普通自定义名称,触发1064语法错误:
- 表名
data是MySQL官方保留关键字 - 字段名
position同样属于MySQL保留关键字
- 表名
- 执行建表语句时,MySQL读取到
CREATE TABLE data后会将data识别为关键字而非自定义表名,后续字段定义逻辑无法被正常解析,最终返回你看到的报错信息。
修复方案
共有两种可行修复方式:
方案1:修改命名避开保留关键字(更推荐,兼容性更强)
将涉及保留关键字的表名、字段名修改为语义匹配的非保留字名称,例如将表名改为dish_data,position字段改为display_order,修改后语句如下:
CREATE TABLE dish_data ( id INT NOT NULL AUTO_INCREMENT, dish VARCHAR(255), display_order INT(3), price INT(4), PRIMARY KEY (id) );
方案2:用反引号包裹保留关键字标识符
如果业务上必须使用data作为表名、position作为字段名,只需给所有保留关键字加上反引号`进行包裹,强制MySQL将其识别为自定义标识符即可,修改后语句如下:
CREATE TABLE `data` ( id INT NOT NULL AUTO_INCREMENT, dish VARCHAR(255), `position` INT(3), price INT(4), PRIMARY KEY (id) );
内容的提问来源于stack exchange,提问作者DashingDojo
相关产品推荐
相关产品推荐

