goInception
goInception copied to clipboard
5.6版本timestamp设置默认值为NULL时检查不通过
描述
SQL上线功能中,SQL语句:ALTER TABLE t_fxr_datapath ADD COLUMN deleted_at timestamp NULL DEFAULT NULL;
在对5.6版本的mysql进行SQL检查时,提示:Invalid default value for column 'deleted_at'.
但是在5.7版本中可以检查通过。
预期在5.6、5.7版本的实例都可以支持这种写法。
看到作者 @hanchuanchuan 在https://github.com/hanchuanchuan/goInception/issues/406 中对SQL版本做了判断,请问为什么使得5.6版本的实例上不支持这样timestamp NULL DEFAULT NULL的语法,这样的设计是有什么其他的考虑吗
辛苦有了解的同学可以帮忙解惑。
重现 SQL上线功能,选择5.6版本的mysql实例,必现。
环境
- 数据库: [mysql]
- 版本: [5.6.41-log]
参数 可能与问题相关的设置参数
看这一部分代码逻辑功能,以及参考注释含义
注释中描述“有默认值,且为NULL,且有NOT NULL约束,如(not null default null)”,那此处条件应该是notNullFlag,而不是!notNullFlag
@hanchuanchuan 辛苦请看下我的理解是否正确