我正在开发一个前端为PHP
且后端MySql
与XAMPP服务器的项目。
我在DATETIME
中有一个名为“created”的字段,数据类型为MySQl
。我需要将默认的当前日期时间值传递给此字段。
我知道PHP
中有一些功能可以将当前日期时间添加到MySql
数据库,如
date_default_timezone_set("America/Chicago");
$date = date('Y-m-d H:i:s');
在某些情况下(可能是错误的),PHP代码可能无法在mysql中传递日期时间,并且默认情况下它由MySql
采用“0000-00-00 00:00:00”。
任何人都可以指导我需要添加哪个单词作为此创建字段的默认值。
我尝试将CURRENT_TIMESTAMP添加为默认值。
但它给了我错误:
#1067 - Invalid default value for 'created'
任何人都可以给我指点。
感谢。
答案 0 :(得分:1)
只有CURRENT_TIMESTAMP
版本MySQL
或更高版本才能将5.6.5
设置为默认值。否则,您只能将0
的默认值设置为datetime
类型列。
您可以在SQL Fiddle上尝试以下示例,并了解使用MySQL 5.5.32
不支持此示例。将其更改为5.6.6
,以下示例应该正常工作。
来自我本地服务器的示例:
mysql> create table ts( dt datetime default current_timestamp );
Query OK, 0 rows affected (0.54 sec)
mysql> select version();
+-----------+
| version() |
+-----------+
| 5.6.15 |
+-----------+
请参阅MySQL文档:
答案 1 :(得分:0)
如果您想使用ON UPDATE CURRENT_TIMESTAMP
,则应将字段设为TIMESTAMP
而不是DATETIME
。
或者,考虑在这种情况下使用触发器:http://dev.mysql.com/doc/refman/5.0/en/trigger-syntax.html
(正如slugonamission所说:MySQL is not allowing ON UPDATE CURRENT_TIMESTAMP for a DATETIME field)
答案 2 :(得分:0)
请将TYPE
从DATETIME更改为timestamp
,并在默认选择CURRENT_TIMESTAMP
希望这会奏效。
注意:您不需要提供长度/值
如果您要更新任何更新的记录,请将属性更改为on update CURRENT_TIMESTAMP