我目前正在使用Haskell和Yesod平台以及MySQL数据库构建一个网站。我想在Yesod中使用Persistent模块。为此,我已按照此模块上的guide进行操作。一切正常,直到我想在我的数据库中的accountCreatedDate
列中添加默认值。这是我的模型文件:
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
当我运行yesod devel时,我收到以下错误:
devel.hs:ConnectionError {errFunction =“query”,errNumber = 1064,errMessage =“您的SQL语法出错;请查看与您的MySQL服务器版本对应的手册,以便在'CURRENT_TIME附近使用正确的语法'第1行'} 退出代码:ExitFailure 1
我对这个错误感到奇怪的是,我复制了该确切行的指南(除了列的名称)。为了解决这个问题,我需要更改什么?
编辑:我也尝试了CURRENT_TIME()
。
EDIT2:我当前的MySQL版本是5.5,这是Yesod试图做的查询:
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)
答案 0 :(得分:1)
经过一些研究后,似乎无法使用我的MySQL版本的CURRENT_TIME等函数为DateTime列设置默认值。由于Yesod / Persistent中的UTCTime是DateTime,我想我不能这样做。然而,似乎他可以使用MySQL 5.6.5。
我在以下链接中找到了相关信息:How do you set a default value for a MySQL Datetime column?