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

标签 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 = "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/

相关文章:

php - 动态添加的表单字段 - pdo php mysql

git - 操作 git 仓库的 Haskell 库

haskell - 警告 : newtype `CInt' is used in an FFI declaration,

亚马逊上的 Haskell (Yesod)

haskell - Yesod 使用 GHCI 而不是 GHC 实时重载《哈姆雷特》?

php - 如何防止sql注入(inject)?无需修改 SQL 查询

php - 当我想在 MYSQL 中插入克罗地亚语字母 (č,ć,š,đ,ž) 时,我的函数有什么问题

haskell - 无法运行在 GHCI 中运行的我的 wxHaskell 程序

haskell - Yesod respondSource 来自具有 PrimMonad 约束的源

python - 使用optuna从python成功访问MySQL数据库