zoukankan      html  css  js  c++  java
  • 解决 Django 自定义用户模型之前就已经数据迁移的 BUG

    解决 Django 自定义用户模型之前就已经数据迁移的 BUG

    Django 建议我们对于 AUTH_USER_MODEL 参数的设置一定要在第一次数据库迁移之前就设置好,否则后续使用可能出现未知错误。

    所以自定义用户模型以后,执行 python manage.py migrate 命令时,系统报错类似如下:

    django.db.migrations.exceptions.InconsistentMigrationHistory: Migration reversion.0001_squashed_0004_auto_20160611_1202 is applied before its dependency users.0001_initial on database 'default'.
    

    这是表示有一个叫 reversion 的子应用使用了原来的废弃的 users 模型,但是目前数据库已经设置了默认的子应用为 users 的模型了,所以产生了冲突。对于这种冲突,我们需要清除原来的迁移文件和数据库中的所有信息来解决。

    解决步骤:

    1. 备份数据库,删除关于用户原来的数据表信息和表结构(如果刚开始开发,则直接清除库中所有数据表即可)

      drop database renran;
      create database renran charset=utf8mb4;    -- 一定要指定编码!!!
      
    2. 删除子应用 users 中 migrations 目录下除了__init__.py 以外的所有迁移文件

    3. 删除在 django.contrib.admindjango.contrib.auth 模块里面的 migrations 迁移文件,除了 __init__.py

    4. 删除在 xadmin 和 reversion 模块中的 migrations 的迁移文件,除了 __init__.py

    5. 执行数据迁移,把备份数据,除了用户以外的全部恢复执行即可

    6. 正常使用 manage.py createsuperuser 创建管理员即可

    当然,也可以清空数据库,删除虚拟环境,再重新配置虚拟环境,推倒重来。

  • 相关阅读:
    关于matplotlib绘制直方图偏移的问题
    XP下 无法定位程序输入点WSAPoll于动态链接库ws2_32.dll 的解决办法
    Ubuntu 拨号上网及校园网开启IPV6
    php性能优化
    Mac OS X 10.11.6 重置root密码
    php 接口类与抽象类的实际作用
    Redis Cluster集群的搭建与实践
    nginx 反向代理 取得真实IP和域名
    mysql主从配置,出错
    mycat水平分片规则
  • 原文地址:https://www.cnblogs.com/shuoliuchina/p/12521604.html
Copyright © 2011-2022 走看看