MySQL命令行多行创建表报1064错误求助
MySQL命令行多行建表报ERROR 1064的解决办法
在MySQL命令行客户端使用多行语句创建claim表时,已修正重复PRIMARY KEY的问题,但仍触发ERROR 1064 (42000)语法错误。将语句合并为单行即可正常执行,且相同的多行语句在PopSQL中能成功建表,需解决多行编写的报错问题。
报错的多行建表语句及错误信息
mysql> CREATE TABLE claim ( -> claim_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, -> claim_date DATE, -> reason VARCHAR(50), -> transport_ref VARCHAR(10), -> po_ref VARCHAR(10), -> nesi_ref VARCHAR(10), -> efbs_ref VARCHAR(10), -> claim_ref VARCHAR(10), -> load_date DATE, -> net_weight DECIMAL(8,2), -> boxes SMALLINT(4), -> claim_currency VARCHAR(3), -> insure_value_kg DECIMAL(5,2), -> other_costs_kg DECIMAL(5,2), -> invoice_number VARCHAR(10), -> invoice_date DATE, -> invoice_value DECIMAL(10,2), -> notes VARCHAR(256) -> );
错误信息:
ERROR 1064 (42000): 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 ' TABLE claim ( claim_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, claim_date ' at line 1
可正常执行的单行语句
CREATE TABLE claim (claim_id SMALLINT(5) AUTO_INCREMENT PRIMARY KEY, claim_date DATE, reason VARCHAR(50), transport_ref VARCHAR(10), po_ref VARCHAR(10), nesi_ref VARCHAR(10), efbs_ref VARCHAR(10), claim_ref VARCHAR(10), load_date DATE, net_weight DECIMAL(8,2), boxes SMALLINT(4), claim_currency VARCHAR(3), insure_value_kg DECIMAL(5,2), other_costs_kg DECIMAL(5,2), invoice_number VARCHAR(10), invoice_date DATE, invoice_value DECIMAL(10,2), notes VARCHAR(256));
单行执行结果:
Query OK, 0 rows affected, 2 warnings (0.03 sec)
报错原因及解决办法
报错原因
语句本身语法无问题,报错源于MySQL命令行客户端的多行输入处理异常:
- 复制粘贴时带入了不可见的特殊字符(如全角空格、异常换行符)
- 输入过程中不小心输入了多余字符,导致命令行识别错误
解决办法
- 手动逐行输入:避免复制粘贴,手动输入第一行
CREATE TABLE claim (后按回车,在->提示符下逐行输入字段定义,最后输入);回车执行,确保每行无多余字符。 - 检查字符格式:确保所有空格、逗号、括号都是半角字符,没有全角符号混入。
- 验证语句完整性:多行输入时,确保最后一行的
);正确输入,没有遗漏或多余符号。
按上述方法输入的多行语句可正常执行,与单行语句效果一致。
内容的提问来源于stack exchange,提问作者Tony Baynes
相关产品推荐
相关产品推荐

