2016-07-06 17 views
1

私はこれについてかなりの記事を見てきましたが、これまでのところ私は役に立たなかった。私は、仕事のdjangoアプリケーションを持っていて、私はsqliteからpostgresqlデータベースに行きたいと思っています。そのために、私はdjangogirlsのチュートリアルに従っています。何かエラーが発生するまで、素晴らしいです。django sqlite to postgresql移行時のProgrammingError

開発用に私のPCにpostgresqlをダウンロードしたところ、うまく動作しているpsycopg2をダウンロードしてインストールしました。私はsettings.py DB設定を変更しました。私はpostgresに移行したいところです。

チュートリアルで言うところの "python manage.py migrate"を実行するのは、私にとってはうまくいきませんでした。なぜなら、それは空のアプリケーションか何かであると考えられていて、すでにマイグレーションとモデルが関連付けられているからです。

私が実行している

python manage.py makemigrations 
python manage.py migrate 

は、トリックを行うだろうと読んで、私は私のカスタムモデルに問題がありました。私はその後、私は

python manage.py makemigrations 
python manage.py migrate --fake 

コメント解除を実行し、この問題のモデルを使用するすべてのコードをコメントアウトし、私が試したが、今私は同じエラーを取得しています

python manage.py migrate 

を実行することができることを読んで私のカスタムモデルとしてではなく、contenttypesアプリのために。

トレースバックはこれです:


( "ラ・関係 'たdjango_content_type' n'existeのPASは" = "関係 'たdjango_content_type' が存在しません")

Operations to perform: 
    Apply all migrations: auth, contenttypes, sessions, admin 
Running migrations: 
    No migrations to apply. 
Traceback (most recent call last): 
    File "C:\Users\gbastien1\Envs\django-carte\lib\site-packages\django\db\backends\utils.py", line 64, in execute 
    return self.cursor.execute(sql, params) 
psycopg2.ProgrammingError: ERREUR: la relation « django_content_type » n'existe pas 
LINE 1: ..."."app_label", "django_content_type"."model" FROM "django_co... 
                  ^

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

Traceback (most recent call last): 
    File "C:\Users\gbastien1\Envs\django-carte\lib\site-packages\django\contrib\contenttypes\models.py", line 67, in get_for_model 
    ct = self.get(app_label=opts.app_label, model=opts.model_name) 
    File "C:\Users\gbastien1\Envs\django-carte\lib\site-packages\django\db\models\manager.py", line 122, in manager_method 
    return getattr(self.get_queryset(), name)(*args, **kwargs) 
    File "C:\Users\gbastien1\Envs\django-carte\lib\site-packages\django\db\models\query.py", line 381, in get 
    num = len(clone) 
    File "C:\Users\gbastien1\Envs\django-carte\lib\site-packages\django\db\models\query.py", line 240, in __len__ 
    self._fetch_all() 
    File "C:\Users\gbastien1\Envs\django-carte\lib\site-packages\django\db\models\query.py", line 1074, in _fetch_all 
    self._result_cache = list(self.iterator()) 
    File "C:\Users\gbastien1\Envs\django-carte\lib\site-packages\django\db\models\query.py", line 52, in __iter__ 
    results = compiler.execute_sql() 
    File "C:\Users\gbastien1\Envs\django-carte\lib\site-packages\django\db\models\sql\compiler.py", line 848, in execute_sql 
    cursor.execute(sql, params) 
    File "C:\Users\gbastien1\Envs\django-carte\lib\site-packages\django\db\backends\utils.py", line 79, in execute 
    return super(CursorDebugWrapper, self).execute(sql, params) 
    File "C:\Users\gbastien1\Envs\django-carte\lib\site-packages\django\db\backends\utils.py", line 64, in execute 
    return self.cursor.execute(sql, params) 
    File "C:\Users\gbastien1\Envs\django-carte\lib\site-packages\django\db\utils.py", line 95, in __exit__ 
    six.reraise(dj_exc_type, dj_exc_value, traceback) 
    File "C:\Users\gbastien1\Envs\django-carte\lib\site-packages\django\utils\six.py", line 685, in reraise 
    raise value.with_traceback(tb) 
    File "C:\Users\gbastien1\Envs\django-carte\lib\site-packages\django\db\backends\utils.py", line 64, in execute 
    return self.cursor.execute(sql, params) 
django.db.utils.ProgrammingError: ERREUR: la relation « django_content_type » n'existe pas 
LINE 1: ..."."app_label", "django_content_type"."model" FROM "django_co... 
                  ^


During handling of the above exception, another exception occurred: 

Traceback (most recent call last): 
    File "manage.py", line 10, in <module> 
    execute_from_command_line(sys.argv) 
    File "C:\Users\gbastien1\Envs\django-carte\lib\site-packages\django\core\management\__init__.py", line 353, in execute_from_command_line 
    utility.execute() 
    File "C:\Users\gbastien1\Envs\django-carte\lib\site-packages\django\core\management\__init__.py", line 345, in execute 
    self.fetch_command(subcommand).run_from_argv(self.argv) 
    File "C:\Users\gbastien1\Envs\django-carte\lib\site-packages\django\core\management\base.py", line 348, in run_from_argv 
    self.execute(*args, **cmd_options) 
    File "C:\Users\gbastien1\Envs\django-carte\lib\site-packages\django\core\management\base.py", line 399, in execute 
    output = self.handle(*args, **options) 
    File "C:\Users\gbastien1\Envs\django-carte\lib\site-packages\django\core\management\commands\migrate.py", line 204, in handle 
    emit_post_migrate_signal(self.verbosity, self.interactive, connection.alias) 
    File "C:\Users\gbastien1\Envs\django-carte\lib\site-packages\django\core\management\sql.py", line 50, in emit_post_migrate_signal 
    using=db) 
    File "C:\Users\gbastien1\Envs\django-carte\lib\site-packages\django\dispatch\dispatcher.py", line 192, in send 
    response = receiver(signal=self, sender=sender, **named) 
    File "C:\Users\gbastien1\Envs\django-carte\lib\site-packages\django\contrib\auth\management\__init__.py", line 85, in create_permissions 
    ctype = ContentType.objects.db_manager(using).get_for_model(klass) 
    File "C:\Users\gbastien1\Envs\django-carte\lib\site-packages\django\contrib\contenttypes\models.py", line 80, in get_for_model 
    "Error creating new content types. Please make sure contenttypes " 
RuntimeError: Error creating new content types. Please make sure contenttypes is migrated before trying to migrate apps individually. 

私の移行は次のようになり

admin 
[X] 0001_initial 
[X] 0002_logentry_remove_auto_add 
auth 
[X] 0001_initial 
[X] 0002_alter_permission_name_max_length 
[X] 0003_alter_user_email_max_length 
[X] 0004_alter_user_username_opts 
[X] 0005_alter_user_last_login_null 
[X] 0006_require_contenttypes_0002 
[X] 0007_alter_validators_add_error_messages 
contenttypes 
[X] 0001_initial 
[X] 0002_remove_content_type_name 
sessions 
[X] 0001_initial 

私は非常に多くのことを試みたので、この問題の解決方法はわかりません。データベースとデプロイメントは私の強みではありません。誰かが私にこれを理解してもらえますか?私は自分のアプリケーションが働いていたし、私のsqliteのファイルとすべての私の移行を削除してやり直す一部に私のすべての変更を元に戻す試みた

EDIT は、私はすべてのコードをコメントアウトし、すべての私のPYC(Pythonのキャッシュ)ファイルを削除しましたEcoleモデルに関連して再度マイグレートしても、同じエラーが表示されます。(

+0

sqliteからデータを保持しますか?そして、 'python manage.py contenttypeの移行'は何をしますか? –

+0

私はsqliteから自分のデータを失っても構いません。そのコマンドは上記と同じエラーを出力します:/ –

+0

答えに新しい情報を追加するのではなく、質問を編集できます。 – marcanuy

答えて

0

dump your data into jsonの場合は、sqliteファイルを削除してpostgres set up as a DBでプロジェクトを移行してください。

例のワークフローは次のようになります

mkdir <app name>/fixtures

python manage.py dumpdata >> <app name>/fixtures/all_data.json

rm <sqlite file>.db

python manage.py migrate

python manage.py loaddata <app name>/fixtures/all_data.json

ここで、<app name>はメインアプリの名前(または実際のディレクトリ)で、<sqlite file>はsqliteファイルの名前です。

+0

これはもう悲しいことではありません:(データをダンプしようとすると、上記のようなエラーが表示されます: 'CommandError:データベースをシリアライズできません:Error:relation" django_content_type "doesn ' t exist' –

+0

あなたのデータを保持する必要があります – marcusshep

+0

アプリケーションのロード時にExcelファイルからデータをロードするので、実際にはそれについて考えることはありません –

0

まあ、最後に私は、psycopg2がsettings.pyのINSTALLED_APPSにあるはずだと言ったstackoverflowに小さなポストを1つ見つけました。私はそれをもう一度追加しました

python manage.py migrate 

それはうまくいきました!答えた人のおかげで、本当に感謝しています!

「Ecole」モデルに関連するすべてのコードをコメントする前にエラーが発生しましたが、それはcontentypes 1と非常によく似ています

programmingError: ERROR: relation "carte_interactive_ecole" does not exist 

「carte_interactiveは」私のアプリ名であり、「エコール」私のモデル

誰かに私のための別のアイデアはありますか?モデルを参照するコードがある場合、そのモデルをマイグレートできないのはなぜですか?私はすべてのエコールコードをコメントアウトした場合、それは大丈夫です...

EDIT
私はapps.py準備のコードをコメントアウトした場合()私は自分のアプリケーションを移行することができますが、それはおそらくないことがわかりましたアプリケーションを実行してデータベースを使用する何かをすると、上記と同じエラーが発生するので、完全に移行します。 :それはコメントのために長すぎるので、/

+0

'__init __。py'ファイルを除いて、あなたの' migrations'フォルダから全てを削除してみてください。次に、 'python manage.py makemigrations'を実行してから' python manage.py migrate'を実行してください。 –

+0

それは、動作しませんでした:/まだ同じエラーを何度も繰り返す –

0

だから私は答えとしてこれを投稿:

私は(それはおそらくモデルはありませんので、移行する前にそれを使用して私のモデルを使用していますapps.py内のコードをコメントアウト。まだ存在していないそれから私はmakemigrationsを走った、そして私が得た:

私の2つのモデルがあり、罰金だ
Migrations for 'carte_interactive': 
    001_initial.py: 
     -Create model Ecole 
     -Create model ExcelFile 

その後

私は移行走った、と

apply all migrations: admin, carte_interactive, [...] 
Running Migrations: No migrations to apply. 
01を得ました。 I showmigrations、すべてがチェックされているとき、それはそれらをチェックしますが、いくつかのテーブルを作成しなかったことであるかもしれないので、私は--fakeと昨日を試みたものの

、すべてが(...、それはそう

EDITをやっているので、解決策)
OK psycopg2がsettings.pyのINSTALLED_APPSに含まれていなかったので、まずpostgresqlなどでテーブルを作成できませんでした。

また、データベースを完全に削除して移行を開始し、すべてのテーブルを削除するようにしましたが、簡単に再作成しました。次に、apps.pyのコードが移行前に実行されていたため、移行を実行する前にコメントにしておく必要がありました。結局のところ、makemigrationsを実行し、コメント付きコードで移行し、コメントを外してアプリケーションを実行するのは魅力的でした!答えた人のおかげで、本当に感謝しています!

関連する問題