You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

将dump文件恢复到MySQL Docker镜像时遇SQL语法错误求助

解决MySQL导入时的ERROR 1064语法错误

从你的错误信息和操作过程来看,核心问题出在你要导入的source.sql文件里混进了非SQL语句的内容——具体就是mysqldump导出时的警告文本mysqldump: [Warning] Using a password on the command line interface can be insec,MySQL尝试执行这行无效文本,直接触发了语法错误。

下面是一步步的解决方法:

1. 清理SQL文件中的无效内容

打开本地的./source.sql文件,检查开头或文件内是否存在类似这样的警告行:

mysqldump: [Warning] Using a password on the command line interface can be insecure.

把所有这类不属于SQL语句的注释、警告文本全部删除,只保留纯SQL命令(比如CREATE TABLE、INSERT、ALTER这类合法语句)。

2. 优化导入命令的写法

你的命令可以做些调整,避免引号转义带来的潜在问题:

  • 如果在bash环境下执行,密码部分可以直接写,不用额外转义引号:
    docker exec -i sql-db sh -c 'exec mysql -uroot -psuper_secret_pw users' < ./source.sql
    
  • 更安全的方式是用环境变量传递密码(避免密码暴露在命令行历史中):
    docker exec -i sql-db sh -c 'exec mysql -uroot -p"$MYSQL_ROOT_PASSWORD" users' < ./source.sql
    
    这个前提是你的sql-db容器已经设置了MYSQL_ROOT_PASSWORD环境变量(从你提供的容器信息来看,应该是已经配置过的)。

3. 确认目标数据库存在

执行导入前,先验证users数据库是否已经在容器内创建:

docker exec -it sql-db mysql -uroot -psuper_secret_pw -e "SHOW DATABASES;"

如果输出里没有users,先创建这个数据库:

docker exec -it sql-db mysql -uroot -psuper_secret_pw -e "CREATE DATABASE IF NOT EXISTS users;"

完成以上步骤后,重新执行导入命令,应该就能正常完成数据导入了。

内容的提问来源于stack exchange,提问作者Ctfrancia

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.09 09:52:41