我目前正在使用Haskell和Yesod平台以及MySQL数据库来构建网站。我想在Yesod中使用Persistent模块。为此,我遵循了本模块上的指南。一切正常,直到我想向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)
经过更多研究后,似乎无法使用CURRENT_TIME之类的函数在我的MySQL版本中为DateTime列设置默认值。由于Yesod / Persistent中的UTCTime是DateTime,所以我想我不能这样做。但是,他似乎可以在MySQL 5.6.5中使用。
我在以下链接中找到了相关信息:如何为MySQL Datetime列设置默认值?
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句