Django Heroku Postgres - ProgrammingError:关系不存在

时间:2016-01-07 13:32:36

标签: python django postgresql heroku

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

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

在Python shell中,我的数据库架构一直出现“ProgrammingError:relation”app_table“不存在”等错误。

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

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

但没有任何效果。

1 个答案:

答案 0 :(得分:0)

您好我将现有应用迁移到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

  8. 中粘贴并执行SQL语句

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