MYSQL CURRENT_TIMESTAMP仅适用于更新

时间:2017-09-19 18:50:38

标签: mysql

我有一个名为date(timestamp)的列的数据库,该列设置为默认CURRENT_TIMESTAMP。这曾经工作正常,但是在将数据库迁移到另一台服务器之后,只有在执行UPDATE查询后才会应用时间戳,INSERT查询只会将其设置为" 0000-00-00 00:00:00&#34 ;

1 个答案:

答案 0 :(得分:1)

我怀疑无论做什么插入都是在字段中放入一个空字符串。看看这个结果;

MariaDB [horizon]> create table foo (t timestamp default current_timestamp not null);
Query OK, 0 rows affected (0.02 sec)

MariaDB [horizon]> insert into foo values ('');
Query OK, 1 row affected, 1 warning (0.01 sec)

MariaDB [horizon]> select * from foo;
+---------------------+
| t                   |
+---------------------+
| 0000-00-00 00:00:00 |
+---------------------+
1 row in set (0.00 sec)

我会检查正在执行插入的代码 - 如果它来自Web表单,表单本身可能会提交一个空字符串。您确实需要插入null或将列从INSERT中删除以获取默认值。

MariaDB [horizon]> insert into foo values (null);
Query OK, 1 row affected (0.01 sec)

MariaDB [horizon]> insert into foo values ();
Query OK, 1 row affected (0.00 sec)

MariaDB [horizon]> select * from foo;
+---------------------+
| t                   |
+---------------------+
| 0000-00-00 00:00:00 |
| 2017-09-19 21:41:16 |
| 2017-09-19 21:41:20 |
+---------------------+
3 rows in set (0.00 sec)