有一个带有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: 我尝试添加一个新的(完全空白的)列,但增加了精度,但它引发了同样的错误。
答案 0 :(得分:4)
您的更改查询在第二个位置缺少(6)
:
ALTER TABLE `my_db`.`logs`
CHANGE COLUMN `timestamp` `timestamp` TIMESTAMP(6) NOT NULL DEFAULT
CURRENT_TIMESTAMP(6)