我试图将Django从1.8升级到1.9,但是当我运行迁移时,它抛出了错误。下面是堆栈跟踪。在
Stack trace
这是因为django1.9中引入了一个新的迁移,它将auth username unicity逻辑从表单移到模型[ref:ticket]。但是,在升级之前,我们已经实现了这里提到的一点hack,将用户名字符长度从默认的30个字符长度增加到75个字符。现在,当我运行迁移时,它只考虑用户名的前30个字符,并抛出完整性错误。有办法吗?我不想使用自定义身份验证模型,因为这涉及到很多复杂的问题。在
Tags:
首先,如果您还没有迁移到migration 0006。在
然后在发布后升级到Django 1.10(或1.11 LTS),并假迁移0007。在
^{pr2}$此迁移尝试将列从75个字符减少到30个字符,因此必须伪造。在
然后,您可以运行
auth
的其余迁移:特别是,从django1.10迁移0008将increase the max length of the username到150个字符。这意味着您可以删除任何可能导致问题的用户名最大长度更改的黑客行为。在
为了安全起见,我不建议伪造0007并升级到django1.9。我不知道伪造迁移和保持用户名长度的黑客行为是否有效,或者会引起我没有想到的问题。在
相关问题 更多 >
编程相关推荐