goInception icon indicating copy to clipboard operation
goInception copied to clipboard

5.6版本timestamp设置默认值为NULL时检查不通过

Open nieen opened this issue 1 year ago • 1 comments

描述 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]

参数 可能与问题相关的设置参数

nieen avatar Sep 29 '24 03:09 nieen

看这一部分代码逻辑功能,以及参考注释含义 image 注释中描述“有默认值,且为NULL,且有NOT NULL约束,如(not null default null)”,那此处条件应该是notNullFlag,而不是!notNullFlag @hanchuanchuan 辛苦请看下我的理解是否正确

nieen avatar Sep 29 '24 07:09 nieen