为什么在db_index = False时需要指定密钥长度?

时间:2015-02-01 17:40:33

标签: python mysql django

我将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。

由于

1 个答案:

答案 0 :(得分:1)

这是因为唯一关键字会自动为该字段生成索引,即使您指定db_index=False

您应该这样想,unique=True会在这种情况下覆盖db_index=False

更新

如果您查看SQL语句(如果您使用sqlmigrate> = Django 1.7),则可以清楚地看到unique=True覆盖db_index=False

... "foo" text NOT NULL UNIQUE

因此,如果您根本不想拥有索引,则需要完全删除unique=True

希望这有帮助。