3

loaddata を使用して、django プロジェクトの dumpdata から生成された json ファイルから、新しいデータベースを持つ新しいファイルにデータをロードしようとしています。データベースへの接続は機能しているようですが、すぐに関係django_content_typeの許可が拒否されました。私たちが話している許可が得られません。データベースは別のサーバー上のpostgresであり、仮想環境を持つラップトップのvagrant仮想マシンを介して接続し、settings.pyにはdbに接続するための設定があります。トレースバックは次のとおりです。

Problem installing fixture 'djgprd1_dumpdata.json': Traceback (most recent call last):
  File "/home/vagrant/devenv/local/lib/python2.7/site-packages/django/core/management/commands/loaddata.py", line 196, in handle
    obj.save(using=using)
  File "/home/vagrant/devenv/local/lib/python2.7/site-packages/django/core/serializers/base.py", line 165, in save
    models.Model.save_base(self.object, using=using, raw=True)
  File "/home/vagrant/devenv/local/lib/python2.7/site-packages/django/db/models/base.py", line 524, in save_base
    manager.using(using).filter(pk=pk_val).exists())):
  File "/home/vagrant/devenv/local/lib/python2.7/site-packages/django/db/models/query.py", line 565, in exists
    return self.query.has_results(using=self.db)
  File "/home/vagrant/devenv/local/lib/python2.7/site-packages/django/db/models/sql/query.py", line 441, in has_results
    return bool(compiler.execute_sql(SINGLE))
  File "/home/vagrant/devenv/local/lib/python2.7/site-packages/django/db/models/sql/compiler.py", line 818, in execute_sql
    cursor.execute(sql, params)
  File "/home/vagrant/devenv/local/lib/python2.7/site-packages/django/db/backends/util.py", line 40, in execute
    return self.cursor.execute(sql, params)
  File "/home/vagrant/devenv/local/lib/python2.7/site-packages/django/db/backends/postgresql_psycopg2/base.py", line 52, in execute
    return self.cursor.execute(query, args)
DatabaseError: Could not load contenttypes.ContentType(pk=29): permission denied for relation django_content_type

ここで何が間違っていますか?

4

2 に答える 2

2

ContentTypeオブジェクトをエクスポートしているように見えますがdumpdata( --all?)、これは仕様によるものですか?

ドキュメントには、--naturalこのような問題を修正するフラグを使用することをお勧めします。 https://docs.djangoproject.com/en/dev/ref/django-admin/#django-admin-option---naturalを参照してください。

この引用も参照してください。

一般的なリレーションを実装するモデルからデータをシリアル化する場合 (たとえば、フィクスチャを生成する場合)、関連する ContentType オブジェクトを一意に識別するために自然キーを使用する必要があります。詳細については、ナチュラル キーと dumpdata --natural を参照してください。

ソース: https://docs.djangoproject.com/en/dev/ref/contrib/contenttypes/

于 2013-10-07T10:32:18.447 に答える