2014-09-03 35 views
1

我目前正在使用Haskell和Yesod平臺以及MySQL數據庫構建網站。我想使用Yesod中的Persistent模塊。爲此,我已按照此模塊上的guide。一切工作,直到我想添加一個默認值到我的數據庫中的accountCreatedDate列。這裏是我的模型文件:使用MySQL和Yesod的持久語法的錯誤

User 
    idAccount AccountId Int 
    userLastName Text Maybe 
    userFirstName Text Maybe 
    userAge Int Maybe 
    userSex Text Maybe 
    userEMail Text 
    UniqueUserEMail userEMail 
Account 
    accountName Text 
    accountPassword Text 
    accountCreatedDate UTCTime default=CURRENT_TIME 
    accountLastLogin UTCTime 
    UniqueAccountName accountName 

當我運行耶索德devel的,我得到以下錯誤:

devel.hs: ConnectionError {errFunction = "query", errNumber = 1064, errMessage = "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'CURRENT_TIME' at line 1"} Exit code: ExitFailure 1

我覺得這個怎麼樣的錯誤奇怪的是,我抄了,準確的指導行(除了列的名稱)。爲了解決這個問題,我需要改變什麼?

編輯:我也試過CURRENT_TIME()

EDIT2:我現在的MySQL版本是5.5,這是查詢耶索德正在試圖做的事:

CREATe TABLE `account`(`id` BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY,`account_name` TEXT CHARACTER SET utf8 NOT NULL,`account_password` TEXT CHARACTER SET utf8 NOT NULL,`account_created_date` DATETIME NOT NULL DEFAULT CURRENT_TIME,`account_last_login` DATETIME NOT NULL) 
+1

使用'printMigration'看到它是生產的查詢,然後再進行調試。很可能Yesod生成的查詢與Mysql版本不兼容。 – Sibi 2014-09-03 02:00:41

+1

@Sibi我已經添加了Yesod試圖做的查詢,以及我的MySQL版本,以及我的問題。 – Choub890 2014-09-03 12:21:00

+1

嘗試直接在你的mysql提示符下運行該查詢,看看是否有效。如果它不起作用,那麼很可能它是一個錯誤。 – Sibi 2014-09-03 12:30:10

回答

1

一些調查研究後,它似乎是不可能的使用功能設置默認值像CURRENT_TIME與我的MySQL版本的DateTime列一樣。由於Yesod/Persistent中的UTCTime是DateTime,我想我不能這樣做。然而,似乎他在MySQL 5.6.5中是可能的。

我發現下面鏈接的信息:How do you set a default value for a MySQL Datetime column?