簡體   English   中英

與 PSQL 和 Django 2 的典型“關系“auth_user”不存在”

[英]Typical "relation "auth_user" does not exist" with PSQL and Django 2

編輯:已解決

我有一行像creator = models.ForeignKey(User, on_delete=models.CASCADE, default=User.objects.first().id)那就是問題所在。 當我將其更改為creator = models.ForeignKey(User, on_delete=models.CASCADE)時,一切都重新開始工作。

謝謝。


我知道這是一個反復出現的問題,可以通過遷移解決,但不是我的情況(我認為)。

我有一個 Django 項目(我試過 Django 2.0、2.1 和 2.1.1),它有一個 db.sqlite3 並且運行良好。 現在,我嘗試使用這些配置將數據庫切換為 PostgreSQL 10 :

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql', #I've already tested with PostgreSQL_psycopg2
        'NAME': 'mydbs',
        'USER': 'niknitro',
        'PASSWORD': 'password',
        'HOST': '127.0.0.1',
        'PORT': '5432',
    }
}

在 pg_hba.conf 中,我添加了這一行:

host    all             all             0.0.0.0/32              trust

當我嘗試執行python manage.py migratepython manage.py makemigrationspython manage.py runserver時,出現相同的錯誤:

Starting myproject execution...
/root/PycharmProjects/myproject/venv/lib/python3.6/site-packages/psycopg2/__init__.py:144: UserWarning: The psycopg2 wheel package will be renamed from release 2.8; in order to keep installing from binary please use "pip install psycopg2-binary" instead. For details see: <http://initd.org/psycopg/docs/install.html#binary-install-from-pypi>.
  """)
Starting myproject execution...
/root/PycharmProjects/myproject/venv/lib/python3.6/site-packages/psycopg2/__init__.py:144: UserWarning: The psycopg2 wheel package will be renamed from release 2.8; in order to keep installing from binary please use "pip install psycopg2-binary" instead. For details see: <http://initd.org/psycopg/docs/install.html#binary-install-from-pypi>.
  """)
Unhandled exception in thread started by <function check_errors.<locals>.wrapper at 0x7f4ce0070e18>
Traceback (most recent call last):
  File "/root/PycharmProjects/myproject/venv/lib/python3.6/site-packages/django/db/backends/utils.py", line 85, in _execute
    return self.cursor.execute(sql, params)
psycopg2.ProgrammingError: relation "auth_user" does not exist
LINE 1: ...user"."is_active", "auth_user"."date_joined" FROM "auth_user...
                                                             ^


The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/root/PycharmProjects/myproject/venv/lib/python3.6/site-packages/django/utils/autoreload.py", line 225, in wrapper
    fn(*args, **kwargs)
  File "/root/PycharmProjects/myproject/venv/lib/python3.6/site-packages/django/core/management/commands/runserver.py", line 109, in inner_run
    autoreload.raise_last_exception()
  File "/root/PycharmProjects/myproject/venv/lib/python3.6/site-packages/django/utils/autoreload.py", line 248, in raise_last_exception
    raise _exception[1]
  File "/root/PycharmProjects/myproject/venv/lib/python3.6/site-packages/django/core/management/__init__.py", line 337, in execute
    autoreload.check_errors(django.setup)()
  File "/root/PycharmProjects/myproject/venv/lib/python3.6/site-packages/django/utils/autoreload.py", line 225, in wrapper
    fn(*args, **kwargs)
  File "/root/PycharmProjects/myproject/venv/lib/python3.6/site-packages/django/__init__.py", line 24, in setup
    apps.populate(settings.INSTALLED_APPS)
  File "/root/PycharmProjects/myproject/venv/lib/python3.6/site-packages/django/apps/registry.py", line 112, in populate
    app_config.import_models()
  File "/root/PycharmProjects/myproject/venv/lib/python3.6/site-packages/django/apps/config.py", line 198, in import_models
    self.models_module = import_module(models_module_name)
  File "/usr/lib/python3.6/importlib/__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 994, in _gcd_import
  File "<frozen importlib._bootstrap>", line 971, in _find_and_load
  File "<frozen importlib._bootstrap>", line 955, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 665, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 678, in exec_module
  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
  File "/root/PycharmProjects/myproject/WiFiNets/models.py", line 5, in <module>
    class Wifi(models.Model):
  File "/root/PycharmProjects/myproject/WiFiNets/models.py", line 17, in Wifi
    creator = models.ForeignKey(User, on_delete=models.CASCADE, default=User.objects.first().id)
  File "/root/PycharmProjects/myproject/venv/lib/python3.6/site-packages/django/db/models/manager.py", line 82, in manager_method
    return getattr(self.get_queryset(), name)(*args, **kwargs)
  File "/root/PycharmProjects/myproject/venv/lib/python3.6/site-packages/django/db/models/query.py", line 605, in first
    for obj in (self if self.ordered else self.order_by('pk'))[:1]:
  File "/root/PycharmProjects/myproject/venv/lib/python3.6/site-packages/django/db/models/query.py", line 268, in __iter__
    self._fetch_all()
  File "/root/PycharmProjects/myproject/venv/lib/python3.6/site-packages/django/db/models/query.py", line 1186, in _fetch_all
    self._result_cache = list(self._iterable_class(self))
  File "/root/PycharmProjects/myproject/venv/lib/python3.6/site-packages/django/db/models/query.py", line 54, in __iter__
    results = compiler.execute_sql(chunked_fetch=self.chunked_fetch, chunk_size=self.chunk_size)
  File "/root/PycharmProjects/myproject/venv/lib/python3.6/site-packages/django/db/models/sql/compiler.py", line 1065, in execute_sql
    cursor.execute(sql, params)
  File "/root/PycharmProjects/myproject/venv/lib/python3.6/site-packages/django/db/backends/utils.py", line 100, in execute
    return super().execute(sql, params)
  File "/root/PycharmProjects/myproject/venv/lib/python3.6/site-packages/django/db/backends/utils.py", line 68, in execute
    return self._execute_with_wrappers(sql, params, many=False, executor=self._execute)
  File "/root/PycharmProjects/myproject/venv/lib/python3.6/site-packages/django/db/backends/utils.py", line 77, in _execute_with_wrappers
    return executor(sql, params, many, context)
  File "/root/PycharmProjects/myproject/venv/lib/python3.6/site-packages/django/db/backends/utils.py", line 85, in _execute
    return self.cursor.execute(sql, params)
  File "/root/PycharmProjects/myproject/venv/lib/python3.6/site-packages/django/db/utils.py", line 89, in __exit__
    raise dj_exc_value.with_traceback(traceback) from exc_value
  File "/root/PycharmProjects/myproject/venv/lib/python3.6/site-packages/django/db/backends/utils.py", line 85, in _execute
    return self.cursor.execute(sql, params)
django.db.utils.ProgrammingError: relation "auth_user" does not exist
LINE 1: ...user"."is_active", "auth_user"."date_joined" FROM "auth_user...

同樣在 PostgreSQL.log 中,出現以下行:

2018-09-01 14:23:56.064 UTC [22027] niknitro@myproject ERROR:  relation "auth_user" does not exist at character 280
2018-09-01 14:23:56.064 UTC [22027] niknitro@myproject STATEMENT:  SELECT "auth_user"."id", "auth_user"."password", "auth_user"."last_login", "auth_user"."is_superuser", "auth_user"."username", "auth_user"."first_name", "auth_user"."last_name", "auth_user"."email", "auth_user"."is_staff", "auth_user"."is_active", "auth_user"."date_joined" FROM "auth_user" ORDER BY "auth_user"."id" ASC  LIMIT 1

我知道這個錯誤通常是用 makemigrations 和 migrate 修復的,但不是這種情況。 我也嘗試刪除遷移但沒有用。

這是我的要求:

amqp==2.3.2
anyjson==0.3.3
billiard==3.5.0.4
celery==4.2.1
certifi==2018.4.16
chardet==3.0.4
Django==2.1.1
django-bootstrap3==9.1.0
django-celery==3.2.2
django-forms-bootstrap==3.1.0
django-rest-framework==0.1.0
django-tables2==1.21.2
djangorestframework==3.8.2
idna==2.7
kombu==4.2.1
psycopg2==2.7.5
psycopg2-binary==2.7.5
pytz==2017.3
requests==2.19.1
urllib3==1.23
vine==1.1.4

如果您需要,請讓我分享更多信息。

非常感謝

您不能擁有涉及數據庫查詢的默認值。 這將在第一次導入時執行,創建表的遷移將永遠沒有機會運行。 刪除默認值。

下面在 Django==4.0.2 中對我有用

請執行下列操作:

  1. Go 到您數據庫的django_migrations表並刪除所有遷移。(您需要截斷表)
  2. 刪除 Django 應用程序的遷移文件夾下的所有遷移文件。

然后運行命令:

  1. python manage.py makemigrations
  2. python 管理.py 遷移

當您將 Postgre 數據庫連接到 Django 時會發生此錯誤。

解決這個問題。

Go 到您的 PGAdmin 並刪除與 Django 相關的所有表,然后應用遷移。

這就是我解決問題的方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM