gpt4 book ai didi

mysql - django 和 mysql 上区分大小写的唯一约束

转载 作者:行者123 更新时间:2023-11-30 21:53:36 25 4
gpt4 key购买 nike

我有一个带有唯一约束(或者更确切地说是 unique_together)的模型:

class ReadingMapping(models.Model):
mapset = models.ForeignKey('mapping.ReadingMapset')
data = models.CharField(max_length=500, verbose_name="attributes")

class Meta:
unique_together = ('mapset', 'data')

但是因为我使用 MYSQL 作为后端,比较是不区分大小写的,因为排序规则/字符集是 MYSQL 或 Django 的默认值(这是正确的吗?),我需要它区分大小写。

通过阅读我了解到这不能直接在 Django 模型中,因此我需要更改数据库中的表(参见 this SO question)

我的第一个问题是更改表或列的正确 SQL 语句是什么。我不确定我是否需要更改字符集或仅更改排序规则,或者尽管阅读了各种来源,但我应该将其设置为哪个字符集/排序规则。

我的第二个问题是如何使这个更改成为迁移的一部分(我们将有几十个数据库)我可以只创建一个带有 SQL 语句的任意迁移文件吗?

最佳答案

我发现以下内容适用于迁移文件:

class Migration(migrations.Migration):

dependencies = [
('mapping', '0003_auto_20170725_0737'),
]

operations = [
migrations.RunSQL("ALTER TABLE mapping_readingmapping CONVERT TO CHARACTER SET latin1 COLLATE latin1_general_cs;")
]

关于mysql - django 和 mysql 上区分大小写的唯一约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46119670/

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