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

MySQL备份导入MariaDB时提示date_time字段默认值无效怎么解决

问题原因

你遇到的报错本质是当前使用的MariaDB版本不支持DATETIME类型设置CURRENT_TIMESTAMP作为默认值,该特性仅在MariaDB 10.0.1及以上版本支持,低于该版本的MariaDB仅允许TIMESTAMP类型使用该默认值配置。你已经配置的ALLOW_INVALID_DATES参数仅能规避非法日期格式校验,无法解决语法不支持的问题。

解决方法
  • 方案1:升级MariaDB版本
    直接将MariaDB服务升级到10.0.1及以上版本,无需修改现有备份文件,升级完成后重新执行导入即可。
  • 方案2:修改备份文件中的建表语句
    如果你暂时无法升级版本,可以手动调整报错的建表字段配置,两种可选改法:
    • 调整字段类型:将date_time的字段类型从DATETIME改为TIMESTAMP,修改后语句为:
      `date_time` timestamp DEFAULT CURRENT_TIMESTAMP,
      
      注意TIMESTAMP类型的时间范围为1970-2038年,如果你的业务数据涉及超出该范围的时间,不要使用该方案。
    • 保留DATETIME类型,删除默认值配置,通过触发器实现自动填充时间:
      先修改字段定义为:
      `date_time` datetime DEFAULT NULL,
      
      建表完成后执行触发器创建语句,实现插入数据自动填充当前时间:
      CREATE TRIGGER set_bid_datetime BEFORE INSERT ON `bid`
      FOR EACH ROW SET NEW.date_time = NOW();
      
  • 方案3:临时清空导入会话的sql_mode
    执行导入操作前,先在当前数据库会话中执行如下语句,临时清空会话级sql_mode,再执行导入:
    SET sql_mode = '';
    
    该修改仅对当前会话生效,不会影响全局配置。你可以在导入前执行SELECT @@sql_mode;确认配置生效后再操作。
  • 方案4:重新生成兼容MariaDB的备份文件
    在原MySQL服务器上重新执行mysqldump导出,增加兼容参数:
    mysqldump --compatible=mariadb -u [用户名] -p [数据库名] > backup.sql
    
    用新生成的备份文件在MariaDB侧导入即可避免该语法兼容问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 20:45:03