python manage.py migrate不会在postgres数据库中进行任何更改

问题描述 投票:2回答:2

这似乎是一个简单的问题,我不确定我做错了什么。例如,如果我想通过更改以下内容在models.py中的一个类中添加新字段:

class FeedBack(models.Model):
    feedback = models.CharField(max_length=600)
    user = models.ForeignKey(User,default="")

class FeedBack(models.Model):
    feedback = models.CharField(max_length=600)
    email = models.CharField(max_length=100)
    user = models.ForeignKey(User,default="")

然后我跑了

python manage.py makemigrations

python manage.py migrate

一切似乎都很好,但实际上数据库中没有任何变化。在尝试查看反馈表时,我收到以下异常:

列IngressoMonitor_feedback.email不存在

还使用表上的psql \ d +显示电子邮件尚未添加

现在我可以使用psql来添加和更改表格,但我更喜欢在models.py中编写它,因为这对我来说似乎更容易。

django postgresql openshift django-migrations
2个回答
1
投票

确保包含该models.py文件的应用程序包含在项目设置文件的INSTALLED_APPS中。此外,除非您确定知道自己在做什么,否则请不要触摸应用程序迁移文件夹下的文件。另请确保您的设置文件中指定的数据库帐户具有必要的权限。

如果您最近更改了Django版本,则此link可能对您有用。但无论如何都要试一试,并在这种情况下进行每个应用程序的迁移:

python manage.py makemigrations app_name

如果所有其他方法都失败了,只需删除数据库的表,然后从头开始重新生成所有内容。但是,如果在某些时候,您与任何迁移文件混乱,您可能希望在执行makemigrations之前删除所有迁移文件,以确保您拥有manage.py可以使用的一组新的有效的迁移文件。


0
投票

您可能需要重置数据库用户或所有者密码,然后重试。在我的我不得不重置默​​认postgres用户不使用此链接here从命令行使用任何密码。

然后尝试运行命令:python manage.py migrate,现在就像魅力一样。

不要忘记也从django项目设置配置:myprojectname / myprojectname / settings.py文件。这里的例子是我的;

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': 'polling_db',
        'USER': 'postgres',
        'PASSWORD': '',
        'HOST': '127.0.0.1',
        'PORT': '5432',
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.