swl*_*lim 7 python django django-models
使用MySQL,我正在尝试创建一个包含多个字段的组合键的表。
问题是某些字段很大(长度为255-1024),如果我尝试运行迁移,则会得到:
django.db.utils.OperationalError: (1071, 'Specified key was too long; max key length is 767 bytes')
Run Code Online (Sandbox Code Playgroud)
我发现不必增加数据库的密钥长度(或更改某些其他数据库/表设置),而是可以限制迁移文件中用作密钥的字段的值,以使其保持在最大密钥长度之内,例如这个:
ALTER TABLE <table> ADD UNIQUE KEY `<table>_composite_key` (`col1`, `col2`(75), `col3`, `col4`, `col5`(150));
Run Code Online (Sandbox Code Playgroud)
但是,如果我要更改数据库引擎,这将是一个问题,因为该语法可能与其他语法不兼容。
所以我想知道是否有一种方法可以对unique_together中的每个字段施加限制?
提前致谢!
现在 Django 不支持约束,但在不久的将来将会支持。现在您可以添加 TODO 以在 Django 2.2 发布时更新它。现在用于约束的API并不多。
请参阅:https://docs.djangoproject.com/en/2.2/ref/models/constraints/
它不是您问题的答案,但可以帮助您解决这个问题。
| 归档时间: |
|
| 查看次数: |
175 次 |
| 最近记录: |