gpt4 book ai didi

haskell - 从 PersistEntity/PersistField 映射到 DB 中的列名和表名的规则是什么

转载 作者:行者123 更新时间:2023-12-04 12:11:35 28 4
gpt4 key购买 nike

我需要使用现有的(MySql)数据库,其中已经定义了表和列的名称。

如果我正确理解了文档(并且我没有找到关于这个主题的好的文档,所以链接将受到高度赞赏),表名与 PersistIdentity 相关,因此必须以大写字母开头(我不是这种情况)米面对)。

但是,列名自动不大写(至少在 Yesod 书 Persistent 一章中描述从声明自动生成的代码的代码片段中暗示了这一点),因此 DB 中的列必须以小写字母开头。

上面的描述是真的吗?

我可以专门控制表到身份和列到字段的映射吗?
如果不是,那么命名自动应用的规则是什么?因此,哪些名字是被禁止的?

此外,其中一个字段是 VARCHAR(30)。我如何将其传达给 Persistent?它目前提示(通过yesod devel):

errMessage = "BLOB/TEXT 列 'my_field' 用于在没有 key 长度的 key 规范中"}

这是自动迁移的结果(我可能应该禁用它)。但是,如果我确实想声明一个有界 VARCHAR 字段 - 我可以通过 Persistent 及其自动迁移工具来做到这一点吗?

谢谢,

最佳答案

我不是 MySQL 后端的权威,但 IIRC(并基于代码),您可以使用 maxlen=... 控制最大长度属性。同样,您可以使用 sql=... 直接控制该字段在数据库中的名称。属性。因此,例如,以下可能有效:

Person sql=people
name Text sql=full_name maxlen=40
age Int

我也同意,如果您正在处理预先存在的模式,您应该禁用自动迁移代码。

关于haskell - 从 PersistEntity/PersistField 映射到 DB 中的列名和表名的规则是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10428888/

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