【问题标题】:ProgrammingError: relation "django_session" does not existProgrammingError:关系“django_session”不存在
【发布时间】:2018-10-25 01:24:30
【问题描述】:

将我的数据库从 sqlite 更改为 postgresql 后出现此错误。我已更改所有设置:

这是我的设置:

DATABASES = {
    'default': {
        'ENGINE': "django.db.backends.postgresql_psycopg2",
        'NAME': "postr1",
        'USER': "zorgan",
        'PASSWORD': config('DB_PASSWORD'),
        'HOST': "localhost",
        'PORT': '',
    }
}

以及执行makemigrationsmigrations 都成功了。所以我能够成功启动我的本地服务器:

System check identified no issues (0 silenced).
May 15, 2018 - 08:59:39
Django version 1.11.8, using settings 'draft1.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

但是,当我访问该站点时,它会返回此错误:

ProgrammingError at /news/
relation "django_session" does not exist
LINE 1: ...ession_data", "django_session"."expire_date" FROM "django_se...

知道问题出在哪里吗?

【问题讨论】:

  • 您在 INSTALLED_APPS 中有 django.contrib.sessions 吗?
  • 是的,我有它
  • 奇怪。那么请检查您的数据库中有django_session 表。在python manage.py dbshell\dt
  • 嗯,我的数据库中没有 django_session。知道为什么吗?不过有django_site
  • django_site 和 django_session 完全不同。我认为你迁移时有问题。再次迁移时会发生什么? python manage.py migarte

标签: python django postgresql


【解决方案1】:

尝试将fake migrate 归零。

您的迁移历史显示 sessions 表已经创建,但您没有真正的表。

所以在下面

python manage.py migrate --fake sessions zero
# then your sessions migrate will be
python manage.py showmigrations
sessions
 [ ] 0001_initial
# then migrate with --fake-initial again
python manage.py migrate --fake-initial

然后再试一次。

【讨论】:

  • 太棒了!快乐的黑客!
【解决方案2】:

我正在使用 django-v-3

这是如何解决这个问题的答案?

1. python manage.py migrate --fake

2. python manage.py migrate --fake-initial

3.然后编写 python manage.py runserver

享受

如果遇到问题,请使用 python manage.py 帮助。我希望你能得到解决方案。

【讨论】:

    猜你喜欢
    • 2014-11-30
    • 1970-01-01
    • 2014-08-19
    • 2019-01-24
    • 2020-10-02
    • 2013-05-06
    • 2020-03-06
    • 2023-03-14
    • 1970-01-01
    相关资源
    最近更新 更多