我有一个 TextField
声明为 foo = models.TextField(unique=True, db_index=False)
,但在迁移时我仍然收到错误消息
BLOB/TEXT column 'foo' used in key specification without a key length
我认为只有创建索引时才需要指定长度。 db_index=False
不会阻止创建索引吗?我正在使用 MySQL。
谢谢
最佳答案
这是因为unique关键字会自动为字段生成索引,即使您指定db_index=False
。
您应该这样想,在这种情况下,unique=True
将覆盖 db_index=False
。
更新:
如果您查看 SQL 语句(如果您 >= Django 1.7,请使用 sqlmigrate),您可以清楚地看到 unique=True
覆盖 db_index=False
:
... "foo" text NOT NULL UNIQUE
因此,如果您根本不想拥有索引,则需要完全删除 unique=True
。
希望这有帮助。
关于python - 为什么db_index=False时需要指定 key 长度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28265691/