MySQL建表语句出现ERROR 1064语法错误,请求排查问题原因
解决MySQL批量建表的1064语法错误问题
你的三条建表语句本身语法是完全正确的,报错的根源并不是SQL语法问题,而是多语句执行的客户端配置或操作方式不对,另外可能存在复制粘贴时混入的多余字符干扰。下面是具体的解决方法:
1. 分开执行单个建表语句
绝大多数MySQL客户端(包括原生命令行)在默认模式下,一次只能解析执行一条SQL语句。你可以把三个CREATE TABLE拆分开,逐个执行:
先执行authors表的语句:
CREATE TABLE `authors` ( `id` INT(10) NOT NULL PRIMARY KEY AUTO_INCREMENT, `name` VARCHAR(255) NOT NULL ) DEFAULT CHARSET=latin1;
确认执行成功后,再执行categories表的语句:
CREATE TABLE `categories` ( `id` INT(10) NOT NULL PRIMARY KEY AUTO_INCREMENT, `name` VARCHAR(255) NOT NULL, `img` TEXT NOT NULL ) DEFAULT CHARSET=latin1;
最后执行reviews表的语句:
CREATE TABLE `reviews` ( `id` INT(10) NOT NULL PRIMARY KEY AUTO_INCREMENT, `customer_id` INT(10) NOT NULL, `product_id` INT(10) NOT NULL, `grade` ENUM('Wspaniała', 'Dobra', 'Taka sobie', 'Zła', 'Bardzo zła') NOT NULL, `content` TEXT NOT NULL ) DEFAULT CHARSET=latin1;
2. 清理语句中的多余字符
从你的第三条报错信息里能看到- - -这类无关字符,这大概率是你复制语句时不小心带入的,会导致SQL解析器报错。请检查所有建表语句,确保没有多余的注释符号、换行符或其他无关内容,每个语句都以CREATE TABLE开头,以分号结尾。
3. 开启客户端的多语句执行模式(如需批量执行)
如果你想一次性执行所有语句,需要确保客户端支持多语句解析:
- MySQL命令行:启动时可以加上
--enable-multi-statements参数,或者在命令行交互界面中先执行DELIMITER ;(确认分隔符为分号),再粘贴所有语句执行。 - GUI工具(如phpMyAdmin、Navicat):找到对应的设置选项,比如phpMyAdmin在SQL执行页面有「允许执行多个查询」的复选框,勾选后再提交批量语句;Navicat则可以在执行SQL的窗口中,确保没有限制单语句执行的设置。
内容的提问来源于stack exchange,提问作者ankiedos
相关产品推荐
相关产品推荐

