我将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。
由于
答案 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
。
希望这有帮助。