【问题标题】:Django Heroku Postgres - ProgrammingError: relation does not existDjango Heroku Postgres - ProgrammingError:关系不存在
【发布时间】:2016-04-11 22:04:02
【问题描述】:

我正在使用 Django 1.7、PostgresApp (PostgreSQL 9.4)、Python 2.7。

我已按照本教程设置和创建应用程序:https://docs.djangoproject.com/en/1.9/intro/tutorial02/

在 Python shell 中,对于我的数据库架构,我不断收到类似 "ProgrammingError: relationship "app_table" does not exist" 的错误。

所以我使用了教程中的类:

class Question(models.Model):
  question_text = models.CharField(max_length=200)
  pub_date = models.DateTimeField('date published')


class Choice(models.Model):
  question = models.ForeignKey(Question, on_delete=models.CASCADE)
  choice_text = models.CharField(max_length=200)
  votes = models.IntegerField(default=0)

然后在 shell 中我得到了(正确的值):

>>> Question.objects.all()
[]
>>> Choice.objects.all()
[]

然后,将名称 Choice 修改为 MyChoice 给出:

>>> Question.objects.all()
[]
>>> MyChoice.objects.all()
...
ProgrammingError: relation "app_mychoice" does not exist.

为什么会这样? 我尝试了其他帖子中建议的答案

./manage.py makemigrations; 
./manage.py migrate auth; 
./manage.py migrate and 
python manage.py syncdb

但没有任何效果。

【问题讨论】:

  • 有点糊涂,你把Choice(models.Model)改成MyChoice(models.Model)了吗?
  • 对于 Django 1.7+,您不应该使用 syncdb。您为什么要尝试将型号名称从 Choice 更改为 MyChoice?运行 ./manage.py makemigrations 是否创建了迁移以重命名表?您的应用程序迁移文件夹的内容是什么,您运行了哪些?您可以尝试删除并重新创建数据库,然后删除迁移并再次运行 makemigrations。
  • @Hybrid 是的,这是唯一的变化。
  • @Alasdair 我更改了它以查看它是否仍然有效。 makemigrations 创建了一个名称已更新的迁移。我删除并重新创建了数据库,我得到了同样的错误。
  • 好吧,这看起来像是一个迁移问题,我也总是遇到问题,最终不得不fake 并使用initial 之类的标志,但我不想要给你一个试错答案,希望看到这个的人有更多的迁移经验并能够提供帮助

标签: python django postgresql heroku


【解决方案1】:

您好,我在将现有应用程序迁移到 1.11 并对模型进行一些小的更改时遇到了同样的问题。我找到的唯一解决方案是 ....

  1. 从应用的迁移目录中清除所有文件,只留下 init.py 文件

  2. 确保 admin.py 文件为空

  3. 运行manage.py makemigrations

  4. 运行manage.py sqlmigrate <app_label> 0001

  5. 复制sql输出

  6. 使用 pgAdminIII 选择“执行任意 SQL 查询”

  7. 在 pgAdminIII 中粘贴并执行 SQL 语句

这是我能找到的唯一解决方案,有点破解,但有效。希望它有所帮助。我想这也可以通过 psql 终端工作,但我使用了 pgAdmin

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-03-09
    • 2021-01-03
    • 2016-10-01
    • 2018-12-02
    • 1970-01-01
    • 2018-05-15
    • 2019-08-02
    • 2020-04-09
    相关资源
    最近更新 更多