Peewee-mysql在TextField字段上创建唯一索引失败



我正在尝试创建一个具有唯一索引的模型。

我的模型是这样的:

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));

最新更新