首頁  >  問答  >  主體

ios - mysql中Invalid default value for 'created_at'问题

环境

mac + mysql

问题

在创建表的时候遇到了Invalid default value for 'created_at'的错误,不知道什么原因造成的。

CREATE TABLE `test` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `title` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
  `created_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
  `updated_at` timestamp NOT NULL DEFAULT '1970-01-01 00:00:00',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

默认数据使用“0000-00-00 00:00:00”报错,使用“1970-01-01 00:00:00”也同样报错。

大家讲道理大家讲道理2742 天前647

全部回覆(4)我來回復

  • 迷茫

    迷茫2017-04-17 14:22:57

    首先謝謝各位的幫助,費了很大的勁終於找到了解決方法:

    先用下面的指令看下sql_mode

    show variables like 'sql_mode';

    如果查詢的結果如下:

    ONLY_FULL_GROUP_BY, STRICT_TRANS_TABLES, NO_ZERO_IN_DATE, NO_ZERO_DATE, ERROR_FOR_pISION_BY_ZERO, NO_AUTO_CREATE_USER, NO_ENGINE_SUBSTITUTION

    如果結果含有NO_ZERO_IN_DATE, NO_ZERO_DATE
    則執行下面的指令:

    set session sql_mode='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_pISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'

    回覆
    0
  • 迷茫

    迷茫2017-04-17 14:22:57

    雷雷

    回覆
    0
  • PHP中文网

    PHP中文网2017-04-17 14:22:57

    timestamp 是數字

    1970-00-00 這是 date格式

    類型不同

    回覆
    0
  • 伊谢尔伦

    伊谢尔伦2017-04-17 14:22:57

    timestamp這個字元類型是有範圍的,如果要使用0000-00-00 00:00:00就只能使用字串了

    可以參考我的這篇部落格:http://www.cnblogs.com/chenmh/p/4565986....

    回覆
    0
  • 取消回覆