Django: MySQL makemigrations migrate 迁移报错 django.db.utils.OperationalError: (1060, "Duplicate column name 'xxx'")Django: MySQL makemigrations migrate 迁移报错 django.db.utils.OperationalError: (1060, "Duplicate column name 'xxx'")Django: MySQL makemigrations migrate 迁移报错 django.db.utils.OperationalError: (1060, "Duplicate column name 'xxx'")Django: MySQL makemigrations migrate 迁移报错 django.db.utils.OperationalError: (1060, "Duplicate column name 'xxx'")
  • 首页
  • 博客
  • 文件
  • 书签
  • 分析
  • 登录
Search
Generic filters

Django: MySQL makemigrations migrate 迁移报错 django.db.utils.OperationalError: (1060, "Duplicate column name 'xxx'")

Published by admin at 2022年9月21日
Categories
  • Django
Tags

1. 概述:

删除所有app下migrations文件夹中除__init__.py以外的其它文件(0001_initial.py)后, makemigrations migrate 迁移不报错

导入现有数据库备份文件后,

makemigrations 显示无更改,migrate 迁移报错 django.db.utils.OperationalError: (1060, "Duplicate column name 'user_id'")

2. 相关报错:

django.db.utils.OperationalError: (1060, "Duplicate column name 'user_id'")

3. 报错原因:

删除所有app下migrations文件夹中除__init__.py以外的其它文件(0001_initial.py)后, makemigrations migrate 迁移时,

报错的表由于存在外键,而外键关联的表尚未建立,所以Django会生成两个类似0001_initial.py的文件,前一个不包含外键,后一个添加外键。

猜测可能是导入现有数据库备份文件后,migrate时又重新执行添加外键的0001_initial.py文件,此时由于外键已经存在,所以报错。

4. 解决办法

方法1:

1、查看新建字段是否与已有重复
2、可使用 python manage.py migrate myapp --fake

方法2:
删除所有app下migrations文件夹中除__init__.py以外的其它文件(0001_initial.py)后,按关联顺序,执行
makemigrations [app_label [app_label ...]]
migrate [app_label] [migration_name]
方法3:

删除出错的app下migrations文件夹中除__init__.py以外的其它文件(0001_initial.py)后,
重新执行 makemigrations migrate 迁移。

发表回复 取消回复

您的电子邮箱地址不会被公开。 必填项已用*标注

Categories

  • 猫
  • Python
  • MySQL
  • Django
  • Html/CSS
  • JavaScript
  • Vue
  • RegExp
  • php
  • Practice
  • Virtualization
  • Linux
  • Windows
  • Android
  • NAS
  • Software
  • Hardware
  • Network
  • Router
  • Office
  • WordPress
  • SEO
  • English
  • Games
  • Recipes
  • living
  • Memorandum
  • Essays
  • 未分类

归档

©2015-2022 Alaica Blog support@alaica.com