我有一个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服务器上的工作台中添加完全相同的代码,则表示存在语法错误。
有谁知道原因,有文档原因,链接到博客为什么?或者更重要的是,建议一个可行的解决方案?
答案 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开始,你可以拥有它。