gpt4 book ai didi

mysql - 使用 MySQL 和 Yesod 的持久语法错误

转载 作者:行者123 更新时间:2023-11-29 00:10:00 27 4
gpt4 key购买 nike

我目前正在使用 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 = "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,这是 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 是可能的。

我在以下链接中找到了信息:How do you set a default value for a MySQL Datetime column?

关于mysql - 使用 MySQL 和 Yesod 的持久语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25634492/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com