python - 为什么db_index=False时需要指定 key 长度?

标签 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。

谢谢

最佳答案

这是因为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/

相关文章:

python - 我可以从 google refine 调用外部 *python* 函数吗?

python - 由于查询调用的自动刷新导致的 SQLAlchemy OperationalError

html - 如何在 Django 中创建命名 anchor 以深入到页面的特定部分

django - 为什么 Django 会抛出系统错误?

python - 在 Django 中创建持久数据对象

python - Node JS/Python/C/C++中USB连接后Linux复制文件

python - 是否有 pandas 自相关图方法的 Bokeh 版本?

python - 使用另一列中的数据对行进行子集化

php - 如何在 PHP 中查找查询 "INSERT ... ON DUPLICATE KEY UPDATE..."的哪一部分成功?

mysql - 尝试修改 MYSQL 中的列数据类型时出错