繁体   English   中英

Peewee mysql 无法在 TextField 字段上创建唯一索引

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM