执行表增加字段语句报错

mysql> ALTER TABLE ha_question ADD COLUMN question_number INT;
ERROR (): Invalid default value for 'created_time'

查看created_time字段

mysql> desc ha_question;
+-----------------------+------------------+------+-----+---------------------+-----------------------------+
| Field | Type | Null | Key | Default | Extra |
+-----------------------+------------------+------+-----+---------------------+-----------------------------+
| created_time | timestamp | NO | | 0000-00-00 00:00:00 | |
+-----------------------+------------------+------+-----+---------------------+-----------------------------+

创建都不行,所以猜测应该是系统中某个参数的设置问题。看来关于date和time相关的参数没有什么异常。
联想到限制能限制的sql的只有sql_mode。果然:NO_ZERO_IN_DATE,NO_ZERO_DATE这两个参数限制时间不能为0.

查看sql_mode
mysql> show variables like 'sql_mode';
+---------------+-------------------------------------------------------------------------------------------------------------------------------------------+
| Variable_name | Value |
+---------------+-------------------------------------------------------------------------------------------------------------------------------------------+
| sql_mode | ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION |
+---------------+-------------------------------------------------------------------------------------------------------------------------------------------+
row in set (0.24 sec)

NO_ZERO_DATE
在严格模式,不要将 '0000-00-00'做为合法日期。你仍然可以用IGNORE选项插入零日期。在非严格模式,可以接受该日期,但会生成警告。

NO_ZERO_DATE:若设置该值,MySQL数据库不允许插入零日期,插入零日期会抛出错误而不是警告。

NO_ZERO_IN_DATE

在严格模式,不接受月或日部分为0的日期。如果使用IGNORE选项,我们为类似的日期插入'0000-00-00'。在非严格模式,可以接受该日期,但会生成警告。

处理的办法:

1,  修改sql_mode,去掉NO_ZERO_IN_DATE,NO_ZERO_DATE这两个参数

2,  修改表的default值,去掉default也可以。

mysql> alter table ha_question modify created_time timestamp not null;
Query OK, rows affected (0.07 sec)
Records: Duplicates: Warnings: mysql> ALTER TABLE ha_question ADD COLUMN question_number INT;
Query OK, rows affected (28.07 sec)
Records: Duplicates: Warnings:

这个出现的原因应该是建表前sql_mode没有这两个值,建表后修改的sql_mode。

个人感觉修改表的风险小一点,以免修改sql mode影响其他表的使用。

修改前的

mysql> desc ha_question;
+-----------------------+------------------+------+-----+---------------------+-----------------------------+
| Field | Type | Null | Key | Default | Extra |
+-----------------------+------------------+------+-----+---------------------+-----------------------------+
| created_time | timestamp | NO | | -- :: | |
+-----------------------+------------------+------+-----+---------------------+-----------------------------+

修改后的

mysql> desc ha_question;
+-----------------------+------------------+------+-----+-------------------+-----------------------------+
| Field | Type | Null | Key | Default | Extra |
+-----------------------+------------------+------+-----+-------------------+-----------------------------+
| created_time | timestamp | NO | | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP |
+-----------------------+------------------+------+-----+-------------------+-----------------------------+

转自

ERROR 1067 (42000): Invalid default value for 'currentTime' - CSDN博客 https://blog.csdn.net/xionglang7/article/details/44499307

MySQL:ERROR 1067 (42000): Invalid default value for 'end_time' - 禁忌夜色153 - 博客园 https://www.cnblogs.com/jinjiyese153/p/7300510.html

ERROR 1067 (42000): Invalid default value for 'created_time'【转】的更多相关文章

  1. mysql错误总结-ERROR 1067 (42000): Invalid default value for TIMESTAMP

    1. ERROR 1067 (42000): Invalid default value for 'FAILD_TIME'   (对TIMESTAMP  类型的子段如果不设置缺省值或没有标志not n ...

  2. MySQL错误:ERROR 1067 (42000): Invalid default value for 'timestamp_field'

    数据库报错   ERROR 1067 (42000): Invalid default value for 'start_time' 是因为数据库的配置有问题: 可以看到  NO_ZERO_IN_DA ...

  3. MySQL:ERROR 1067 (42000): Invalid default value for 'end_time'

    © 版权声明:本文为博主原创文章,转载请注明出处 1.错误截图 2.错误分析 表中的第一个TIMESTAMP列(如果未声明为NULL或显示DEFAULT或ON UPDATE子句)将自动分配DEFAUL ...

  4. 解决:ERROR 1067 (42000): Invalid default value for 'login_time'

    如图操作数据表的时候出现上图的错误 问题的原因就是出在timestamp的默认值不正确,针对以上问题的解决方案是:修改默认值为当前值. sql语言代码: Alter table user modify ...

  5. ERROR 1067 (42000): Invalid default value for 'time'

    修改sql_mode,去掉NO_ZERO_IN_DATE,NO_ZERO_DATE这两个参数 查看 root@:: [hmda]> show variables like 'sql_mode'; ...

  6. MySQL5.7导入数据报错ERROR 1067 (42000) at line 1015: Invalid default value for 'service_time'

    解决办法: 修改my.cnf,[mysqld] 下面添加sql_mode=STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_U ...

  7. MySQL 5.7 Invalid default value for 'CREATE_TIME'报错的解决方法

    出处:http://blog.itpub.net/15498/viewspace-2136006/ 由于数据库的升级,今天在执行从MySQL 5.6导出来的SQL文件时报错: mysql> so ...

  8. 【数据库】Invalid default value for 'create_date' timestamp field

    问题 最近遇到一个这样的问题,新建数据库表的时候 提示 错误如下 Invalid default value for 'created_time' timestamp field 语句如下 `crea ...

  9. mysql error 1067 invalid default timestamp

    问题 MySQL 5.7版本,在创建数据表时,使用以下语句定义一个字段: `update_time` timestamp DEFAULT '0000-00-00 00:00:00' ON UPDATE ...

随机推荐

  1. 【转】19个必须知道的Visual Studio快捷键

    本文将为大家列出在Visual Studio中常用的快捷键,正确熟练地使用快捷键,将大大提高你的编程工作效率. 项目相关的快捷键 Ctrl + Shift + B = 生成项目 Ctrl + Alt ...

  2. 洛谷 P4097 [HEOI2013]Segment 解题报告

    P4097 [HEOI2013]Segment 题目描述 要求在平面直角坐标系下维护两个操作: 在平面上加入一条线段.记第 \(i\) 条被插入的线段的标号为 \(i\) 给定一个数 \(k\),询问 ...

  3. hiho一下 第144周(机会渺茫)解题报告及拓展

    题目1 : 机会渺茫 时间限制:5000ms 单点时限:1000ms 内存限制:256MB 描述 小Hi最近在追求一名学数学的女生小Z.小Z其实是想拒绝他的,但是找不到好的说辞,于是提出了这样的要求: ...

  4. 洛谷 P1880 [NOI1995] 石子合并(区间DP)

    传送门 https://www.cnblogs.com/violet-acmer/p/9852294.html 题解: 这道题是石子合并问题稍微升级版 这道题和经典石子合并问题的不同在于,经典的石子合 ...

  5. springboot集成druid连接池

    使用druid连接池主要有几步: 1.添加jar和依赖 <groupId>org.mybatis.spring.boot</groupId> <artifactId> ...

  6. MQTT 及其 测试工具

    协议说明书:https://mcxiaoke.gitbooks.io/mqtt-cn/content/mqtt/04-OperationalBehavior.html 官网提供了很多的broker模拟 ...

  7. Makefile ------ $@ $^ %< 使用

    一步一步理解 1.源程序的编译 在Linux下面,如果要编译一个C语言源程序,我们要使用GNU的gcc编译器. 下面我们以一个实例来说明如何使用gcc编译器. 假设我们有下面一个非常简单的源程序(he ...

  8. how to calculate the best fit to a plane in 3D, and how to find the corresponding statistical parameters

    sklearn实战-乳腺癌细胞数据挖掘(博客主亲自录制视频教程) https://study.163.com/course/introduction.htm?courseId=1005269003&a ...

  9. Hbase记录-HBase扫描/计数/权限

    HBase扫描   scan 命令用于查看HTable数据.使用 scan 命令可以得到表中的数据.它的语法如下: scan ‘<table name>’ 下面的示例演示了如何使用scan ...

  10. mysql 缓存机制

    了解mysql缓存吗(顺丰) mysql缓存机制就是缓存sql 文本及缓存结果,用KV形式保存再服务器内存中,如果运行相同的sql,服务器直接从缓存中去获取结果,不需要在再去解析.优化.执行sql. ...