لا يمكن لـ Django SyncDB بعد الإسقاط/إنشاء قاعدة بيانات

StackOverflow https://stackoverflow.com/questions/2125326

  •  22-09-2019
  •  | 
  •  

سؤال

كنت أرغب في إعادة تعيين قاعدة بيانات وأصدرت قاعدة بيانات إسقاط متبوعة بقاعدة بيانات إنشاء على خادم postgresql تم الوصول إليها من خلال PSYCOPG2 بواسطة تطبيق Django.

عندما أفعل ./manage.py syncdb أحصل على الخطأ التالي:

(prod)root@ns204612:/home/someproject/prod/django-mingus/mingus# ./manage.py syncdb
Traceback (most recent call last):
  File "./manage.py", line 16, in <module>
    execute_manager(settings)
  File "/home/someproject/prod/lib/python2.6/site-packages/django/core/management/__init__.py", line 362, in execute_manager
    utility.execute()
  File "/home/someproject/prod/lib/python2.6/site-packages/django/core/management/__init__.py", line 303, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/home/someproject/prod/lib/python2.6/site-packages/django/core/management/base.py", line 195, in run_from_argv
    self.execute(*args, **options.__dict__)
  File "/home/someproject/prod/lib/python2.6/site-packages/django/core/management/base.py", line 222, in execute
    output = self.handle(*args, **options)
  File "/home/someproject/prod/lib/python2.6/site-packages/django/core/management/base.py", line 351, in handle
    return self.handle_noargs(**options)
  File "/home/someproject/prod/lib/python2.6/site-packages/django/core/management/commands/syncdb.py", line 52, in handle_noargs
    tables = connection.introspection.table_names()
  File "/home/someproject/prod/lib/python2.6/site-packages/django/db/backends/__init__.py", line 491, in table_names
    return self.get_table_list(cursor)
  File "/home/someproject/prod/lib/python2.6/site-packages/django/db/backends/postgresql/introspection.py", line 30, in get_table_list
    AND pg_catalog.pg_table_is_visible(c.oid)""")
  File "/home/someproject/prod/lib/python2.6/site-packages/django/db/backends/util.py", line 19, in execute
    return self.cursor.execute(sql, params)
psycopg2.InternalError: current transaction is aborted, commands ignored until end of transaction block

وفي سجل postgresql حصلت على الخطأ التالي:

2010-01-24 01:08:02 CET ERROR:  relation "django_site" does not exist
2010-01-24 01:08:02 CET STATEMENT:  SELECT "django_site"."id", "django_site"."domain", "django_site"."name" FROM "django_site" WHERE "django_site"."id" = 1  ORDER BY "django_site"."domain" ASC
2010-01-24 01:08:02 CET ERROR:  current transaction is aborted, commands ignored until end of transaction block
2010-01-24 01:08:02 CET STATEMENT:  
                    SELECT c.relname
                    FROM pg_catalog.pg_class c
                    LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
                    WHERE c.relkind IN ('r', 'v', '')
                        AND n.nspname NOT IN ('pg_catalog', 'pg_toast')
                        AND pg_catalog.pg_table_is_visible(c.oid)
2010-01-24 01:08:02 CET LOG:  could not receive data from client: Connection reset by peer
2010-01-24 01:08:02 CET LOG:  unexpected EOF on client connection

كيف يمكنني إصلاح ذلك من فضلك؟

هل كانت مفيدة؟

المحلول

كان سبب ذلك مشكلة في مرجع Django الذي يستخدمه Django-Mingus. أثناء SyncDB Django يقوم ببعض الاستبطان DB وإيرادات ذات صلة أثار هذا الاستثناء. إذا كنت ترغب في سحب أحدث البتات إما من Django-request أو Django-Mingus ، فستكون على ما يرام.

نصائح أخرى

حاول إعادة تعيين قاعدة البيانات مثل ./manage.py إعادة تعيينك

كنت أواجه نفس المشكلة وتتبعها إلى الالتزام في 2979EA3D4541F7B3C51C17E160BC95B468AC999B على Django-Mingus

إذا قمت بإعادة التعيين لالتزام 2F7EB8DE7E2CB1C776E801A40F008048FCBB6D36 ، يجب أن يحدث المزامنة بشكل جيد.

لا يقوم MySQL بإبطال المعاملة الحالية عندما تواجه خطأ حيث يلقي Postgres الخطأ ولا تقوم بتشغيل استعلام آخر حتى لا يتم إحباط المعاملة الحالية. في هذه الحالة ، عليك قتل المعاملة أو الالتزام بمعرف المعاملة هذا

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top