[英]Peewee mysql Failed creating unique index on TextField field
I am trying to create a model with unique index.我正在尝试创建一个具有唯一索引的 model。
My models look like that:我的模型看起来像这样:
class ModelA(Model):
FieldA = CharField()
class ModelB(Model):
fieldA = TextField(unique=True)
fieldB = CharField(max_length=10)
fieldC = BooleanField(default=False)
fieldD = ForeignKeyField(ModelA)
And I'm creating the tables like this:我正在创建这样的表:
db.create_tables([ModelA, ModelB])
My problem is that after creating the table there's no index on ModelB.fieldA.我的问题是创建表后ModelB.fieldA 上没有索引。
When I changed ModelB.fieldA type to CharField instead of TextField:当我将 ModelB.fieldA 类型更改为 CharField 而不是 TextField 时:
class ModelA(Model):
FieldA = CharField()
class ModelB(Model):
fieldA = CharField(unique=True)
fieldB = CharField(max_length=10)
fieldC = BooleanField(default=False)
fieldD = ForeignKeyField(ModelA)
It works properly and an index is created for ModelB.fieldA.它工作正常,并为 ModelB.fieldA 创建了一个索引。
Is there any reason I can't create a unique index on TextField field type?有什么原因我不能在 TextField 字段类型上创建唯一索引吗? How can I create a unique index on ModelB.fieldA and keeping it's type TextField?
如何在 ModelB.fieldA 上创建唯一索引并保持其类型为 TextField?
Thanks谢谢
MySQL requires you to specify a prefix for indexes on text type: https://dev.mysql.com/doc/refman/8.0/en/create-index.html#create-index-column-prefixes MySQL 要求您为文本类型的索引指定前缀: https://dev.mysql.com/doc/refman/8.0/en/create-prefixindex.html#create-0/en/create-prefixindex.html#create-index-index.html
So you will want an index like:所以你会想要一个像这样的索引:
CREATE INDEX my_index ON my_model(text_column (100));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.