自从SQL 5.7以来,我的客户遇到了更多的问题。我发现的问题之一是:
当我运行一个查询时,我会收到一条关于另一列的消息,这真的很奇怪吗??谁能解释这一点?
mysql> ALTER TABLE advertisement ALTER COLUMN local_name set default 'x';
ERROR 1067 (42000): Invalid default value for 'end_time'
造成此错误的表格如下:
mysql> show columns from advertisement;
+----------------+--------------+------+-----+---------------------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------------+--------------+------+-----+---------------------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| local_name | varchar(64) | NO | | | |
| chinese_name | varchar(64) | NO | | | |
| image | varchar(128) | NO | | | |
| top1 | varchar(128) | NO | | | |
| center1 | varchar(128) | NO | | | |
| bottom1 | varchar(128) | NO | | | |
| bottom2 | varchar(128) | NO | | | |
| bottom3 | varchar(128) | NO | | | |
| top_colour1 | varchar(16) | NO | | | |
| center_colour1 | varchar(16) | NO | | | |
| bottom_colour1 | varchar(16) | NO | | | |
| bottom_colour2 | varchar(16) | NO | | | |
| bottom_colour3 | varchar(16) | NO | | | |
| start_time | timestamp | NO | | CURRENT_TIMESTAMP | |
| end_time | timestamp | NO | | 0000-00-00 00:00:00 | |
| hour | varchar(64) | NO | | | |
| status | smallint(6) | NO | | 0 | |
+----------------+--------------+------+-----+---------------------+----------------+
这是因为服务器SQL模式-NO_ZERO_DATE
。
参考:NO_ZERO_DATE
-在严格模式下,不允许'0000-00-00'
作为有效日期。您仍然可以使用IGNORE
选项插入零日期。当不处于严格模式时,会接受日期,但会生成警告。
文档链接