2014-10-17 142 views
0

我有一個API,我每天只能使用1000次。datetime(6)適用於XAMPP,但不適用於最新的Ubuntu MySQL服務器

因此,每次我打電話給API,我在數據庫中放置一個時間戳。 現在,如果我放置在相同的第二數據庫中的時間戳,並且其主鍵,我得到一個異常,所以這個問題是通過將(6)(秒的小數部分的數)

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

解決如果我使用工作臺並將它放置在我的MySQL中,那麼這個運行正常,沒有問題。

如果我在我的ubuntu LAMP服務器上的工作臺中添加完全相同的代碼,則表示存在語法錯誤。

有誰知道爲什麼,有文檔爲什麼,鏈接到博客爲什麼?或者,也許更重要的是,建議一個可行的解決方案?

回答

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你可以擁有它。

+0

這適用於serverfault,但是你碰巧知道如何獲得該版本的MySQL for ubuntu,這是一個從昨天開始的乾淨安裝。如果不是這樣,我可以做一個快速的谷歌。 – 2014-10-17 11:21:16

+0

http://dev.mysql.com/doc/refman/5.6/en/upgrading-from-previous-series.html找到它......謝謝 – 2014-10-17 11:23:55

+1

在登錄到mysql後檢查ubuntu並運行此命令'select version( );'這會顯示你的版本。如果它是舊的,你可以更新或安裝最新版本。 – 2014-10-17 11:24:16

相關問題