将 Django 从 1.8 升级到 1.9 的问题
Issue upgrading Django from 1.8 to 1.9
我正在尝试将 Django 从 1.8 升级到 1.9,但是当我 运行 迁移时它抛出了错误。下面是堆栈跟踪。
这是因为 Django 1.9 中引入了一个新的迁移,即将 auth username unicity 逻辑从表单移动到模型 [ref: ticket ]. But, before upgrading we have implemented a little hack 此处提到将用户名字符长度从默认的 30 个字符长度增加到75 个字符。现在,当我 运行 迁移时,它只考虑用户名的前 30 个字符并抛出完整性错误。有没有解决的办法 ?我不想使用自定义身份验证模型,因为其中涉及很多复杂问题。
首先,如果您还没有迁移到迁移 0006。
./manage.py migrate auth 0006_require_contenttypes_0002
然后在发布后升级到 Django 1.10(或 1.11 LTS),并伪造迁移 0007。
./manage.py migrate auth 0007_alter_validators_add_error_messages --fake
此迁移试图将列从 75 个字符减少到 30 个字符,因此它必须是伪造的。
然后,您可以 运行 auth
的其余迁移:
./manage.py migrate auth
特别是,从 Django 1.10 迁移 0008 将 increase the max length of the username 到 150 个字符。这意味着您可以删除任何黑客来改变可能导致问题的用户名最大长度。
为了安全起见,我不建议伪造 0007 并升级到 Django 1.9。我不知道伪造迁移并保持你的用户名长度 hack 是否有效或会导致我没有想到的问题。
我正在尝试将 Django 从 1.8 升级到 1.9,但是当我 运行 迁移时它抛出了错误。下面是堆栈跟踪。
这是因为 Django 1.9 中引入了一个新的迁移,即将 auth username unicity 逻辑从表单移动到模型 [ref: ticket ]. But, before upgrading we have implemented a little hack 此处提到将用户名字符长度从默认的 30 个字符长度增加到75 个字符。现在,当我 运行 迁移时,它只考虑用户名的前 30 个字符并抛出完整性错误。有没有解决的办法 ?我不想使用自定义身份验证模型,因为其中涉及很多复杂问题。
首先,如果您还没有迁移到迁移 0006。
./manage.py migrate auth 0006_require_contenttypes_0002
然后在发布后升级到 Django 1.10(或 1.11 LTS),并伪造迁移 0007。
./manage.py migrate auth 0007_alter_validators_add_error_messages --fake
此迁移试图将列从 75 个字符减少到 30 个字符,因此它必须是伪造的。
然后,您可以 运行 auth
的其余迁移:
./manage.py migrate auth
特别是,从 Django 1.10 迁移 0008 将 increase the max length of the username 到 150 个字符。这意味着您可以删除任何黑客来改变可能导致问题的用户名最大长度。
为了安全起见,我不建议伪造 0007 并升级到 Django 1.9。我不知道伪造迁移并保持你的用户名长度 hack 是否有效或会导致我没有想到的问题。