将毫秒精度添加到表

时间:2017-09-28 13:21:54

标签: php mysql sql

有一个带有TIMESTAMP列的日志表,目前的精度低于第二列。

这还不够,因为有时会在同一秒内发生多个事件,这样我们就无法说明发生事件的顺序。

我知道这可以通过自动递增的ID来修复(将它们按照发生的顺序排列),但是我之后的时间戳是毫秒级的,因为我希望看到两次之间发生了多少时间事件

如果我将列默认值从 CURRENT_TIMESTAMP 更改为 CURRENT_TIMESTAMP(3),我在MySQL Workbench中收到以下错误:

Executing:
ALTER TABLE `my_db`.`logs` 
CHANGE COLUMN `timestamp` `timestamp` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP(6) ;

Operation failed: There was an error while applying the SQL script to the database.
ERROR 1067: Invalid default value for 'timestamp'
SQL Statement:
ALTER TABLE `my_db`.`logs` 
CHANGE COLUMN `timestamp` `timestamp` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP(6)

我已经在表格中有数据,我不想使用,所以我想改变这个表格。

实际上是否可以通过这种方式更改表格,所以从现在开始,timestamp列会更精确?

PS: 我尝试添加一个新的(完全空白的)列,但增加了精度,但它引发了同样的错误。

1 个答案:

答案 0 :(得分:4)

您的更改查询在第二个位置缺少(6)

ALTER TABLE `my_db`.`logs` 
CHANGE COLUMN `timestamp` `timestamp` TIMESTAMP(6) NOT NULL DEFAULT 
CURRENT_TIMESTAMP(6)