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

无法导入SQL文件,咨询报错含义及pubdate字段异常原因

MySQL导入旧项目SQL文件pubdate字段报错解决方案

pubdate字段报错为新旧版本MySQL的SQL模式兼容性问题:
早年低版本MySQL(5.6及更早)默认允许日期类型字段使用0000-00-00 00:00:00这类零值作为默认值,高版本MySQL(5.7及之后)默认开启NO_ZERO_DATE、NO_ZERO_IN_DATE严格校验规则,禁止非法零值日期写入,就会触发对应的报错。

方案1:临时调整SQL模式完成导入

适合不想修改原SQL文件的场景:

  • 导入前先在数据库执行命令:SET sql_mode = '';
  • 执行SQL导入操作
  • 导入完成后可执行以下命令恢复默认校验规则(可选):
    -- MySQL 8.0 版本用这个
    SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';
    -- MySQL 5.7 版本用这个
    SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO';
    
    如果你用phpMyAdmin等可视化工具导入,直接在导入页面的「SQL模式」输入框留空再导入即可。

方案2:修改原SQL文件的字段定义,一劳永逸

适合后续还要多次导入该SQL的场景:

  • 打开SQL文件,找到pubdate字段对应的建表语句,原有写法大概率为:
    `pubdate` datetime NOT NULL DEFAULT '0000-00-00 00:00:00'
    
  • 根据业务需求修改为合法定义即可:
    • 如果允许该字段为空,改成:pubdate datetime NULL DEFAULT NULL
    • 如果要求非空,改成合法默认值:pubdate datetime NOT NULL DEFAULT '1970-01-01 08:00:00'

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 14:09:03