[英]Peewee mysql Failed creating unique index on TextField field
我正在尝试创建一个具有唯一索引的 model。
我的模型看起来像这样:
class ModelA(Model):
FieldA = CharField()
class ModelB(Model):
fieldA = TextField(unique=True)
fieldB = CharField(max_length=10)
fieldC = BooleanField(default=False)
fieldD = ForeignKeyField(ModelA)
我正在创建这样的表:
db.create_tables([ModelA, ModelB])
我的问题是创建表后ModelB.fieldA 上没有索引。
当我将 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)
它工作正常,并为 ModelB.fieldA 创建了一个索引。
有什么原因我不能在 TextField 字段类型上创建唯一索引吗? 如何在 ModelB.fieldA 上创建唯一索引并保持其类型为 TextField?
谢谢
MySQL 要求您为文本类型的索引指定前缀: https://dev.mysql.com/doc/refman/8.0/en/create-prefixindex.html#create-0/en/create-prefixindex.html#create-index-index.html
所以你会想要一个像这样的索引:
CREATE INDEX my_index ON my_model(text_column (100));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.