Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用MySQL和Yesod的持久语法出错_Mysql_Haskell_Yesod_Persistent - Fatal编程技术网

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

使用MySQL和Yesod的持久语法出错,mysql,haskell,yesod,persistent,Mysql,Haskell,Yesod,Persistent,我目前正在使用Haskell和Yesod平台以及MySQL数据库构建一个网站。我想使用YesSOD中的持久模块。为此,我遵循了本模块的说明。一切正常,直到我想在数据库的accountCreatedDate列中添加一个默认值。这是我的模型文件: User idAccount AccountId Int userLastName Text Maybe userFirstName Text Maybe userAge Int Maybe userSex Text

我目前正在使用Haskell和Yesod平台以及MySQL数据库构建一个网站。我想使用YesSOD中的持久模块。为此,我遵循了本模块的说明。一切正常,直到我想在数据库的
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服务器版本对应的手册,以了解在第1行“当前时间”附近使用的正确语法”} 退出代码:退出失败1

这个错误让我觉得奇怪的是,我复制了该行的指南(除了列的名称)。要解决此问题,我必须更改什么

编辑:我还尝试了
CURRENT\u TIME()

EDIT2:我当前的MySQL版本是5.5,这是YesSOD尝试执行的查询:

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)

经过进一步研究,似乎不可能在我的MySQL版本中为DateTime列使用类似CURRENT_TIME的函数来设置默认值。因为Yesod/Persistent中的UTCTime是日期时间,我想我不能这样做。然而,MySQL 5.6.5似乎可以实现his


我在以下链接中找到了相关信息:

使用
printMigration
查看它正在生成的查询,然后进一步调试它。很可能是YesSOD生成的查询与Mysql版本不兼容。@在我的问题中,我添加了YesSOD尝试执行的查询,以及我的Mysql版本。请尝试直接在Mysql提示符中运行该查询,看看是否有效。如果它不工作,那么很可能是一个bug。