使用MySQL和Yesod的持久语法出错

时间:2014-09-03 00:39:42

标签: mysql haskell yesod persistent

我目前正在使用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)

1 个答案:

答案 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?