Uri*_*olz 7 haskell persistent yesod
我需要使用现有的(MySql)数据库,其中已经定义了表和列的名称.
如果我正确理解文档(并且我没有找到关于这个主题的好文档,那么链接将受到高度赞赏),表名与PersistIdentity相关,因此必须以大写字母开头(事实并非如此)面对).
但是,列名自动取消大写(至少在Yesod书中暗示的内容,持久性章节,在描述自声明自动生成的代码的代码片段中),因此DB中的列必须以小写字母开头.
上面的描述确实如此吗?
我可以具体控制表到标识和列到字段的映射吗?如果没有,则自动应用于命名的规则是什么?因此禁止使用什么名字?
此外,其中一个字段是VARCHAR(30).我如何与Persistent沟通?它目前(通过yesod devel)抱怨说:
errMessage ="没有密钥长度的密钥规范中使用的BLOB/TEXT列'my_field'"
这是自动迁移的结果(我可能应该禁用它).但是,如果我想声明一个有界的VARCHAR字段 - 我可以通过Persistent及其自动迁移工具来实现吗?
谢谢,
我不是MySQL后端的权限,但是IIRC(并且基于代码),您可以通过使用该maxlen=...属性来控制最大长度.同样,您可以使用该sql=...属性直接控制字段在数据库中的名称.因此,例如,以下可能有效:
Person sql=people
name Text sql=full_name maxlen=40
age Int
Run Code Online (Sandbox Code Playgroud)
我还同意,如果您正在处理预先存在的架构,则应禁用自动迁移代码.
| 归档时间: |
|
| 查看次数: |
409 次 |
| 最近记录: |