首页 > 解决方案 > 迁移 Django 模型时如何解决错误?

问题描述

我想迁移我的模型以在我的本地 PgSQL DB 上创建表。这不是我第一次在这种配置上这样做,但这次失败了。

我的操作:

1)我删除了我的旧数据库jlb_inventory

2)我重新创建了数据库jlb_inventory 为

3)我删除了应用程序目录中的“0001_initial”/migration

4)我运行命令python manage.py makemigrations=>错误

模型.py

# Table Etude
class Study(models.Model):
    study_name = models.CharField(max_length=255, null=False)



class Inventory(models.Model):
    watercourse = models.CharField(max_length=255, null=False)
    town = models.CharField(max_length=255, null=False)
    number_resorts = models.IntegerField(null=False)
    inventory_date = models.DateField(null=False)
    fk_study = models.ForeignKey(Study, on_delete=models.CASCADE)



class Resort(models.Model):
    index_resort = models.IntegerField(null=False)
    name_resort = models.CharField(max_length=255)
    fk_inventory = models.ForeignKey(Inventory, on_delete=models.CASCADE)


class Taxon(models.Model):
    name_taxon = models.CharField(max_length=255, null=False)
    gi = models.IntegerField(default=0)


class Sample(models.Model):
    MICRO_HABITAT_CHOICES = (
        ('1', 'Habitat1'),
        ('2', 'Habitat2'),
        ('3', 'Habitat3'),
        ('4', 'Habitat4'),
        ('5', 'Habitat5'),
        ('6', 'Habitat6'),
        ('7', 'Habitat7'),
        ('8', 'Habitat8'),
    )

    taxon_quantity = models.IntegerField(null=False)
    fk_taxon = models.ForeignKey(Taxon, on_delete=models.CASCADE)
    fk_resort = models.ForeignKey(Resort, on_delete=models.CASCADE)

我的错误

django.db.utils.ProgrammingError: relation "business_data_entry_taxon" does not exist
LINE 1: ...ame_taxon", "business_data_entry_taxon"."gi" FROM "business_...

有人知道这里有什么问题吗?谢谢!

标签: pythondjangopostgresql

解决方案


我测试了您的应用程序并且它正在运行(django 2.2)。如果您删除数据库并重新创建新数据库,那么它通常可以正常工作,但不知何故,我认为您需要首先迁移您的数据库。

因此,删除应用程序 INSTALLED_APPS,并重新创建 db 并删除所有迁移。然后运行 ​​makemigrations 并迁移。然后将您的应用添加到 INSTALLED_APPS,再次运行 makemigrations 并迁移。


推荐阅读