psycopg2.InternalError независимо от того, что я делаю - PullRequest
1 голос
/ 17 февраля 2010

Я использую Django и просто удалил и заново создал базу данных для очистки данных таблицы. Теперь, когда я пытаюсь выполнить любую задачу, связанную с БД, я получаю:

./manage.py sql portfolio
Traceback (most recent call last):
  File "./manage.py", line 11, in <module>
    execute_manager(settings)
  File "/usr/lib/pymodules/python2.6/django/core/management/__init__.py", line 362, in execute_manager
    utility.execute()
  File "/usr/lib/pymodules/python2.6/django/core/management/__init__.py", line 303, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/usr/lib/pymodules/python2.6/django/core/management/base.py", line 195, in run_from_argv
    self.execute(*args, **options.__dict__)
  File "/usr/lib/pymodules/python2.6/django/core/management/base.py", line 222, in execute
    output = self.handle(*args, **options)
  File "/usr/lib/pymodules/python2.6/django/core/management/base.py", line 286, in handle
    app_output = self.handle_app(app, **options)
  File "/usr/lib/pymodules/python2.6/django/core/management/commands/sql.py", line 10, in handle_app
    return u'\n'.join(sql_create(app, self.style)).encode('utf-8')
  File "/usr/lib/pymodules/python2.6/django/core/management/sql.py", line 28, in sql_create
    tables = connection.introspection.table_names()
  File "/usr/lib/pymodules/python2.6/django/db/backends/__init__.py", line 491, in table_names
    return self.get_table_list(cursor)
  File "/usr/lib/pymodules/python2.6/django/db/backends/postgresql/introspection.py", line 30, in get_table_list
    AND pg_catalog.pg_table_is_visible(c.oid)""")
  File "/usr/lib/pymodules/python2.6/django/db/backends/util.py", line 19, in execute
    return self.cursor.execute(sql, params)
psycopg2.InternalError: BŁĄD:  current transaction is aborted, commands ignored until end of transaction block

Как видите, это всего лишь генерация кода, поэтому с транзакцией не должно быть никаких проблем. В чем дело? : - (

Ответы [ 2 ]

3 голосов
/ 17 февраля 2010

Эта ошибка означает, что что-то случилось с вашим процессом Postgres, что привело к его сбою в середине транзакции, но транзакция никогда не была зафиксирована или откатана, поэтому она застряла.

Обычно вам нужно либо выполнить команду отката (это часто можно сделать из оболочки Django), либо завершить процесс postgres.

Обратите внимание, что (в зависимости от конфигурации вашего сервера) процессы Postgres продолжают работать, даже если Django нет, поэтому вы каждый раз получаете одну и ту же ошибку, потому что она, вероятно, все еще застревает в одном и том же процессе.

Если вы сделали это, а все еще делает это каждый раз, то это означает, что вы где-то вызываете ошибку в своем реальном коде и вам нужно копать.

0 голосов
/ 22 июля 2013

Проверьте файл журнала postgres, чтобы увидеть фактический запрос, ответственный за ошибку базы данных. и попытайтесь найти, какая часть django делает этот запрос.

Также проверьте https://github.com/django-debug-toolbar/django-debug-toolbar/issues/351. Он говорит, что django-debug-toolbar может быть ответственным за эту ошибку. Попробуйте отключить его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...