2016-06-01 12 views
3

マイグレーション時にProgrammingErrorを実行していますが、カスタムユーザーでdjango-allauthを使用することに関連している可能性があります。django 1.9:ProgrammingError:relation "users_user"が存在しません

create database dj_example; 

2/INSTALLED_APPS django.contrib.sitesが含まれています:

DJANGO_APPS = (
'django.contrib.auth', 
'django.contrib.contenttypes', 
'django.contrib.sessions', 
'django.contrib.sites', 
'django.contrib.messages', 
'django.contrib.staticfiles', 
'django.contrib.admin', 
) 
THIRD_PARTY_APPS = (
'crispy_forms', # Form layouts 
'allauth', # registration 
'allauth.account', # registration 
#'allauth.socialaccount', # registration 
#'allauth.socialaccount.providers.twitter', 
'djcelery', #Celery 
) 
LOCAL_APPS = (
'tucat.users', # custom users app 
} 

3/SITE_IDは1

に設定されているここで私は

1/psqlで新鮮なデータベースを作成するには何をすべきかです

SITE_ID = 1 

4 /カスタム・ユーザー・モデルは過度に単純です:

0123関係 "users_user"

# python manage.py migrate 
    Operations to perform: 
    Apply all migrations: auth, contenttypes, djcelery, account, admin, sessions 
    Running migrations: 
    Rendering model states... DONE 
    Applying account.0001_initial...Traceback (most recent call last): 
    File "/home/antoinet/.virtualenvs/tucat/lib/python3.4/site-packages/django/db/backends/utils.py", line 64, in execute 
    return self.cursor.execute(sql, params) 
psycopg2.ProgrammingError: relation "users_user" does not exist 

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

Traceback (most recent call last): 
File "manage.py", line 12, in <module> 
    execute_from_command_line(sys.argv) 
File "/home/antoinet/.virtualenvs/tucat/lib/python3.4/site-packages/django/core/management/__init__.py", line 353, in execute_from_command_line 
    utility.execute() 
File "/home/antoinet/.virtualenvs/tucat/lib/python3.4/site-packages/django/core/management/__init__.py", line 345, in execute 
    self.fetch_command(subcommand).run_from_argv(self.argv) 
File "/home/antoinet/.virtualenvs/tucat/lib/python3.4/site-packages/django/core/management/base.py", line 348, in run_from_argv 
    self.execute(*args, **cmd_options) 
File "/home/antoinet/.virtualenvs/tucat/lib/python3.4/site-packages/django/core/management/base.py", line 399, in execute 
    output = self.handle(*args, **options) 
File "/home/antoinet/.virtualenvs/tucat/lib/python3.4/site-packages/django/core/management/commands/migrate.py", line 200, in handle 
    executor.migrate(targets, plan, fake=fake, fake_initial=fake_initial) 
File "/home/antoinet/.virtualenvs/tucat/lib/python3.4/site-packages/django/db/migrations/executor.py", line 92, in migrate 
    self._migrate_all_forwards(plan, full_plan, fake=fake, fake_initial=fake_initial) 
File "/home/antoinet/.virtualenvs/tucat/lib/python3.4/site-packages/django/db/migrations/executor.py", line 121, in _migrate_all_forwards 
    state = self.apply_migration(state, migration, fake=fake, fake_initial=fake_initial) 
File "/home/antoinet/.virtualenvs/tucat/lib/python3.4/site-packages/django/db/migrations/executor.py", line 198, in apply_migration 
    state = migration.apply(state, schema_editor) 
File "/home/antoinet/.virtualenvs/tucat/lib/python3.4/site-packages/django/db/backends/base/schema.py", line 90, in __exit__ 
    self.execute(sql) 
File "/home/antoinet/.virtualenvs/tucat/lib/python3.4/site-packages/django/db/backends/base/schema.py", line 110, in execute 
    cursor.execute(sql, params) 
File "/home/antoinet/.virtualenvs/tucat/lib/python3.4/site-packages/django/db/backends/utils.py", line 79, in execute 
    return super(CursorDebugWrapper, self).execute(sql, params) 
File "/home/antoinet/.virtualenvs/tucat/lib/python3.4/site-packages/django/db/backends/utils.py", line 64, in execute 
    return self.cursor.execute(sql, params) 
File "/home/antoinet/.virtualenvs/tucat/lib/python3.4/site-packages/django/db/utils.py", line 95, in __exit__ 
    six.reraise(dj_exc_type, dj_exc_value, traceback) 
File "/home/antoinet/.virtualenvs/tucat/lib/python3.4/site-packages/django/utils/six.py", line 685, in reraise 
    raise value.with_traceback(tb) 
File "/home/antoinet/.virtualenvs/tucat/lib/python3.4/site-packages/django/db/backends/utils.py", line 64, in execute 
    return self.cursor.execute(sql, params) 
django.db.utils.ProgrammingError: relation "users_user" does not exist 

その問題を解決する方法の任意のアイデアは存在しません:

# -*- coding: utf-8 -*- 
from __future__ import unicode_literals, absolute_import 
from django.contrib.auth.models import AbstractUser 

class User(AbstractUser): 
    def __unicode__(self): 
    return self.username 

5/Makemigrationsは細かい

# python manage.py makemigrations 
Migrations for 'djcelery': 
    0028_auto_20160601_1919.py: 
    - Alter field status on taskmeta 

6 /移行がProgrammingErrorを返す動作しますか?

+1

は、あなたがまだ 'tucat.users'の初期移行を実行することがありますか?おそらく他のものの前にそれをする必要があります。また、既定のユーザーモデルの変更は、既存のプロジェクトでは非常に難しい場合があります。既存の移行を破棄して新しい移行を作成する方が簡単かもしれません。 –

+0

#python manage.py makemigrationsユーザーを#した後、#python manage.pyユーザーを移行しましたが、もう一度例外を返します: psycopg2.ProgrammingError:relation "django_site"は存在しません LINE 1:SELECT(1)AS " "FROM" django_site "LIMIT 1 ... django.db.utils.ProgrammingError:リレーション" django_site "は存在しません LINE 1:SELECT(1)" a "from" django_site "LIMIT 1 – antoinet

+1

はい。私は "カスタムやサードパーティーのアプリの前に"書いたはずです。あなたが最初にdjangoコアアプリケーションを実行しなければならないように見えます( 'django.contrib。*') –

答えて

3

エラーは、移行を実行する順序が原因です。多くのアプリは既存のユーザーモデルに依存しているため、他のアプリの前にカスタムユーザーアプリの初期移行を実行する必要があります。

既存のプロジェクトで既定のユーザーモデルを変更すると、既存のすべての移行(およびデータベース)を破棄して最初から再構築する方が簡単な場合があります。移行を適用する順序は次のとおりです。

  1. コアdjango.contribアプリ。
  2. カスタムユーザーアプリ。
  3. その他のカスタムアプリとサードパーティのアプリ。

django-admin showmigrationsを使用して、どの移行が存在し、計画されているかを確認できます。

4

あなたは、移行フォルダを削除する必要があり、その後、あなたがすべき

python manage.py migrate --run-syncdb 

python manage.py migrate --fake appname 
関連する問題