【 TiDB 使用环境】生产环境
【 TiDB 版本】v5.2.3
【遇到的问题】上游业务在对日期类型DATE会设置默认值,为当天,在mysql中可以通过配置curdate()函数自动获取当天值,字段sql为:
create_date date DEFAULT curdate() COMMENT ‘创建日期’
【复现路径】尝试在tidb改变sql语法配置DATE类型默认值,但是都不成功。
【问题现象及影响】
数据表无法添加默认值为当天的DATE类型字段
【附件】
是类似这个问题吗?
看文档仅支持timestamp和datetime用CURRENT_TIMESTAMP
https://docs.pingcap.com/zh/tidb/stable/data-type-date-and-time#自动初始化和更新-timestamp-或-datetime
应该是,我刚看了下还停留在 MySQL 5.7。
这个场景如果是上游往 TiDB 同步的话,还有默认值,TiDB 考虑非空是不是也可以?不过可能就是每次同步表结构变更会麻烦点?
TiDB 目前主要还是兼容 MySQL 5.7
https://docs.pingcap.com/zh/tidb/stable/mysql-compatibility#与-mysql-兼容性对比
确实是8.0的新特性,看官网写的应该是8.0.13开始支持的
https://dev.mysql.com/doc/refman/8.0/en/data-type-defaults.html
5.7只能对datetime或者timestamp用表达式(自增除外)
https://dev.mysql.com/doc/refman/5.7/en/data-type-defaults.html