关于mysql:mysql-datetime-NOT-NULL-DEFAULT-00000000-000000-无效

7次阅读

共计 755 个字符,预计需要花费 2 分钟才能阅读完成。

mysql datetime NOT NULL DEFAULT ‘0000-00-00 00:00:00’ 有效

创立表时,数据类型为 datetime,默认值为 0000-00-00 00:00:00 时报错,查了材料说 0000-00-00 00:00:00 在 mysql5.7 中为非标准工夫,所以谬误

解决办法:

  1. show variables like ‘sql_mode’;
  2. 查看 sql_model 中的值是否有 NO_ZERO_IN_DATE,NO_ZERO_DATE 这两个,如有则持续上面步骤
  3. set session sql_mode=’ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION’ 这个步骤是删除下面的 NO_ZERO_IN_DATE,NO_ZERO_DATE,因为他俩禁止了 0000 这样的日期和工夫,因而从新设置 sql_mode,去掉这两项就能够了
  4. 执行胜利后再执行 sql 应该就能够了
  • 须要留神的事项
  • 设置 sql_mode 有两种形式
  • 第一种:set session sql_mode =’xxxx’
  • 第二种:set global sql_mode =’xxxx’
  • 参考示例:SET [SESSION|GLOBAL] sql_mode=’modes’
  • 此外还要留神:SESSION(默认为选项): 示意以后回话中失效;GLOBAL(需重启 MySql): 示意全局失效
  • 如果你是应用客户端 Navicat 等工具操作的,有很大的可能性你会关上多个窗口,如果你在一个窗口中应用 set session sql_mode=’xxxx’ 批改 sql_mode 的值,而后另一个窗口中执行之前报错的 sql,你会发现还是会报那个谬误,因为 SESSION 是示意以后会话中失效,切记。
正文完
 0