datetime(6)适用于XAMPP,但不适用于最新的Ubuntu MySQL服务器

时间:2014-10-17 11:10:46

标签: mysql datetime ubuntu

我有一个API,我每天只能使用1000次。

因此,每当我调用api时,我都会在数据库中放置一个时间戳。 现在,如果我在同一秒内在数据库中放置一个时间戳,并且它是主键,我得到一个例外,所以通过添加(6)(分数秒)来解决问题

CREATE TABLE `apicall` (
  `timestamp` datetime(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6),
  PRIMARY KEY (`timestamp`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

如果我使用工作台并将其从Windows上的Xampp放入我的MySQL中,这样运行正常且没有问题。

如果我在我的ubuntu LAMP服务器上的工作台中添加完全相同的代码,则表示存在语法错误。

有谁知道原因,有文档原因,链接到博客为什么?或者更重要的是,建议一个可行的解决方案?

1 个答案:

答案 0 :(得分:1)

本地和ubuntu服务器之间存在mysql的版本差异。

在你的本地你至少有MySQL 5.6.4,在Ubuntu中它不到那个,而在那个版本之前,datetime(n)不受支持。

点击此处了解更多详情

http://dev.mysql.com/doc/refman/5.6/en/fractional-seconds.html

在这种情况下,您可能需要使用

CREATE TABLE `apicall` (
  `timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`timestamp`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

请注意,在旧版本的Mysql中你不能拥有

`timestamp` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP

这需要

`timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,

但是,从MySQL 5.6.5开始,你可以拥有它。