如何解决MySQL ERROR 1064 (42000)语法错误?
MySQL导入SQL文件时出现1064语法错误的解决方法
我实在搞不懂为什么会出现这个错误,求帮忙解决。我在MySQL交互环境里执行了这条命令:
mysql> mysql -u root -p foodly < /Users/gregoireperney/Documents/1-dev/trainings_no_git/sql_foodly_db/partie_2/foodly.sql;
直接报了语法错误:
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 'mysql -u root -p foodly < /Users/gregoireperney/Documents/1-dev/trainings_no_git' at line 1
我的MySQL客户端版本是14.14 Distrib 5.7.24(适配osx11.1 x86_64),服务器版本是8.3.0 Homebrew。已经查过官方手册,但没找到解决办法。怀疑问题和SQL文件开头内容有关,以下是文件开头:
-- MySQL dump 10.13 Distrib 8.0.21, for osx10.15 (x86_64) -- -- Host: localhost Database: foodly2 -- ------------------------------------------------------ -- Server version 8.0.21
问题原因及解决办法
- 错误根源:你把系统终端的mysql客户端命令当成SQL语句,在MySQL交互shell里执行了。
mysql -u root -p ...是终端命令,不是mysql>提示符下的SQL指令。 - 正确操作:
- 先退出MySQL交互环境,输入
exit;或者按Ctrl+D回到终端命令行。 - 在终端里执行导入命令:
mysql -u root -p foodly < /Users/gregoireperney/Documents/1-dev/trainings_no_git/sql_foodly_db/partie_2/foodly.sql - 输入root密码后回车,即可开始导入。
- 先退出MySQL交互环境,输入
- 版本兼容提示:SQL文件是用8.0.21导出的,你的服务器是8.3.0,一般不会有兼容问题。如果导入时仍报错,可以尝试加
--force参数强制导入,或者检查SQL文件内是否有8.0.21特有的语法,调整后再导入。
内容的提问来源于stack exchange,提问作者Grégoire Perney
相关产品推荐
相关产品推荐

