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

从SQL文件恢复MySQL数据库遇sql-mode错误,求导入方法

解决MySQL导入数据时的sql-mode错误问题

错误原因

你碰到的错误是因为sql-mode参数拼写不完整——错误信息里的NO_ENGINE_SUBSTITUTIO少了最后一个字母N,正确的参数应该是NO_ENGINE_SUBSTITUTION。这个错误一般来自MySQL配置文件里的错误配置,或者命令行中误传了错误参数。

具体解决方法

方法1:修复配置文件(推荐)

  1. 找到MySQL的配置文件:
    • Linux/macOS:常见路径是/etc/my.cnf、/etc/mysql/my.cnf或者用户目录下的~/.my.cnf
    • Windows:一般在C:\ProgramData\MySQL\MySQL Server X.X\my.ini(X.X是你的MySQL版本号)或者安装目录下的my.ini
  2. 找到sql-mode或sql_mode的配置行,把错误的参数修正为完整的正确配置:
    sql-mode="STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION"
    
  3. 重启MySQL服务,然后重新执行导入命令:
    mysql -u root -p my_db_t < my_db_t_2022_10_12.sql
    

方法2:命令行临时指定正确参数

如果不想修改配置或重启服务,可以直接在导入命令里指定正确的sql_mode(注意这里用下划线,命令行里短横线可能不被识别):

mysql -u root -p --sql_mode="STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION" my_db_t < my_db_t_2022_10_12.sql

方法3:临时跳过配置文件(应急用)

如果只是临时导入数据,也可以用--no-defaults参数跳过读取配置文件,避免加载错误的sql-mode设置:

mysql -u root -p --no-defaults my_db_t < my_db_t_2022_10_12.sql

注意:这个方法会让MySQL使用默认的sql-mode规则,可能和你日常的数据库配置不一致,只适合应急场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 13:20:28