我目前正在使用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)
使用'printMigration'看到它是生產的查詢,然後再進行調試。很可能Yesod生成的查詢與Mysql版本不兼容。 – Sibi 2014-09-03 02:00:41
@Sibi我已經添加了Yesod試圖做的查詢,以及我的MySQL版本,以及我的問題。 – Choub890 2014-09-03 12:21:00
嘗試直接在你的mysql提示符下運行該查詢,看看是否有效。如果它不起作用,那麼很可能它是一個錯誤。 – Sibi 2014-09-03 12:30:10