2010-01-24 54 views
4

我想重置一個數據庫,併發佈一個數據庫,然後在由django應用程序通過psycopg2訪問的postgresql服務器上創建數據庫 。刪除/創建數據庫後,Django無法syncdb

當我做./manage.py執行syncdb我得到以下錯誤:

(prod)[email protected]:/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 

我怎樣才能解決這個問題,請?

+0

它是一個遠程或本地服務器?你有沒有嘗試重新啓動PostgreSQL服務器? – 2010-01-24 00:18:17

+0

這是一個本地服務器,我試圖重新啓動PostgreSQL服務器而沒有結果。 – user234090 2010-01-24 22:07:46

+1

我有一個類似的問題 - 這是由於在我的應用程序中使用__init__.py變得聰明而引起的。在那裏,我導入了我的表單和測試(以便runserver和django-autotest可以接受它們)。通過將這些包裝在一個if塊中,它檢查了我想要的服務器命令的argv,它得到了修復。 – 2012-05-10 09:13:47

回答

0

這是Django-Mingus使用的django-request中的一個問題。在syncdb期間,Django進行了一些db內省,並且一個相關的導入引發了這個異常。如果你想從django-request或者django-mingus中取得最新的數據,你就可以。

+0

非常感謝Kevin。 – user234090 2010-02-01 08:03:25

0

嘗試重置你的數據庫像./manage.py復位your_app

0

我有同樣的問題,並跟蹤它到提交的關於Django的明格斯

2979ea3d4541f7b3c51c17e160bc95b468ac999b如果重置提交2f7eb8de7e2cb1c776e801a40f008048fcbb6d36,同步應該會發生很好。

+0

謝謝您確認問題。 – user234090 2010-02-01 08:04:46

0

當遇到錯誤時,mySQL不會使當前事務失效,其中postgres拋出錯誤並且在當前事務未中止之前不運行其他查詢。在這種情況下,你必須殺死交易或與該事務ID提交

+0

Hi Praveen, 你有一些關於Postgresql事務的指針嗎?如何查找打開的事務,提交或回滾它們? – user234090 2010-02-06 21:53:12

相關問題