执行migrate报错的解决办法:

想知道migrate为什么报错,需要先了解migrate到底做了什么事情

migrate做了什么事情?

1.将相关的迁移脚本翻译成sql语句,然后在数据库中执行

2.如果sql语句执行没有问题,那么会将相关的迁移脚本的名字记录到数据库中django_migrations表中

migrate怎么判断哪些迁移脚本需要执行?

migrate会将代码中的迁移脚本和数据库中的迁移脚本做对比,如果发现数据库中没有这个迁移脚本,便会执行

原因

执行migrate报错,是因为django项目中的迁移脚本和数据库里的django_migrations迁移脚本记录不一致导致报错

解决办法

使用--fake参数

首先对比数据库中的迁移脚本和代码中的迁移脚本,找到哪个不同,然后使用--fake,将代码中的迁移脚本添加到'django_migrations'里,但是不会执行sql语句,这样就避免每次执行migrate的时候重复调用迁移脚本

终极解决方案

如果代码中的迁移脚本和数据库中的脚本实在太多,就是搞不清了,那么这个时候可以用终极解决方案

1.将代码中的迁移脚本和数据库中的迁移脚本全部删除

2.确保app中models的字段和数据库中的字段一致

3.使用 python manager.py makemigrations重新生成迁移脚本

4.使用python manager.py migrate --fake-initial将刚刚生成的迁移脚本,标记为已完成(因为这些模型相对应的表,其实在数据库里都已经存在了,不需要重复执行)

最新文章

  1. InfoCube信息立方体的优化
  2. CCNA网络工程师学习进程(3)常规网络设计模型与基本的网络协议
  3. linux shell 输入密码不显示
  4. JS回调函数(callback)
  5. Windows 2008 故障转移群集介绍
  6. cefSharp 设置运行时系统语言
  7. 用PS给图标添加外发光效果
  8. 【ALB学习笔记】基于事件触发方式的串行通信接口数据接收案例
  9. WebService/WCF/WebAPI区别
  10. TCP的十一种状态与三次握手分析(有图)
  11. jQuery结合lhgdialog弹出窗口,关闭时出现没有权限错误
  12. word 2013 粘贴的图片自适应大小
  13. freckles
  14. ASP.NET MVC下使用AngularJs语言(一):Hello your name
  15. 保留最新N份备份目录脚本
  16. Bootstrap3基础 btn-primary/warning... 三类按钮的六种样式
  17. 最短路(hdu2544)Dijkstra算法二
  18. 《剑指offer》第六题(重要!从尾到头打印链表)
  19. java poi给sheet表格中的某个单元格添加批注
  20. python安装报错:Microsoft Visual C++ 14.0 is required

热门文章

  1. Tableau可视化操作
  2. Linux学习笔记-第5天- 坚持去做一件对的事
  3. __str__与__repr__的触发顺序总结
  4. 总线宽度VS总线带宽
  5. MySQL实战45讲学习笔记:第三十讲
  6. [LeetCode] 18. 4Sum 四数之和
  7. php和jquery生成QR Code
  8. java while 循环
  9. 前端工程化 - 剖析npm的包管理机制
  10. iOS block疑难解答