django.db.utils.OperationalError:(1091,“无法删除'company_id';检查列/键是否存在”)

问题描述 投票:0回答:3

当我迁移时,我总是遇到错误。首先,我创建了表,然后删除了它。现在当我再次创建表时。我正面临这个问题。它也不会创建列。

模型.py

class AssociateCompany(models.Model):
    user = models.ForeignKey(User, related_name="associate_user", on_delete=models.CASCADE)
    company = models.ForeignKey(Company, related_name="associate_company", on_delete=models.CASCADE)
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)

它不会创建列user_id和company_id,并显示以下错误:

django.db.utils.OperationalError:(1091,“无法删除'company_id';检查列/键是否存在”)

django django-models django-migrations django-mysql
3个回答
1
投票

你可以看一下migrations文件夹下的py文件,把操作列表中错误的remove注释掉。


0
投票

这是一个可行的修复方法。 步骤1:注释模型中给出错误的行 步骤2:删除特定的迁移文件,即0003.faied_migrations.py 第三步:运行

python manage.py migrate --fake
步骤4运行
python manage.py makemigrations
您还可以附加app_name,例如
python manage.py makemigrations accounts
步骤5:运行
python manage.py migrate
python manage.py migrate mainapp

在此处阅读更多内容


-2
投票

解决这个问题最简单的方法就是从头开始重新制作数据库。

  1. 如果您使用的是 SQLite。删除文件并删除迁移文件夹中的所有文件,然后尝试再次创建迁移文件。
  2. 如果您使用的是 MySQL 或 PostgreSQL,请删除所有表并重试。不要忘记删除迁移文件,否则这不会 工作。 当您有外键并且删除了该列而不删除依赖数据时,就会出现此问题。
© www.soinside.com 2019 - 2024. All rights reserved.