我正在尝试创建一个具有唯一索引的模型。
我的模型是这样的:
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-index.html#create-索引列前缀
所以你会想要一个像这样的索引
CREATE INDEX my_index ON my_model(text_column (100));