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

MariaDB添加DATE字段自动转为DATETIME,如何设置阻止?

解决MariaDB中DATE字段自动转为DATETIME的问题

在MariaDB 10.6.11版本里,尝试给表my_table添加DATE类型的my_date字段时,字段会自动被转换为DATETIME类型。从操作记录和当前sql_mode配置来看,问题根源在于启用了ORACLE兼容模式。

原因分析

MariaDB的ORACLE sql_mode会模拟Oracle数据库的行为——Oracle中的DATE类型本身包含日期和时间部分,所以开启这个模式后,MariaDB会自动将DATE类型映射为DATETIME类型。

解决步骤

临时修复(仅当前会话生效)

先执行以下命令移除ORACLE模式:

SET sql_mode = REPLACE(@@sql_mode, 'ORACLE', '');

然后重新执行添加字段的语句:

ALTER TABLE my_table ADD my_date DATE;

永久修复(全局生效,需重启服务)

  1. 找到MariaDB的配置文件(通常是my.cnf或my.ini,位置取决于操作系统)
  2. 找到sql_mode配置项,移除其中的ORACLE值
    • 修改前:
      sql_mode = "PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,ORACLE,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,SIMULTANEOUS_ASSIGNMENT"
      
    • 修改后:
      sql_mode = "PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,SIMULTANEOUS_ASSIGNMENT"
      
  3. 重启MariaDB服务,使配置生效

验证

修改完成后,重新执行添加字段的操作,再用DESCRIBE my_table;查看字段类型,确认my_date已正确设置为DATE类型。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 21:13:30