2010-02-17 3 views
1

J'utilise Django et vient de supprimer et de recréer la base de données afin de vider les données de la table. Maintenant, quand je suis en train de faire toutes les tâches liées db, je reçois:psycopg2.InternalError, peu importe ce que je fais

./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 

Comme vous pouvez le voir est juste la génération de code, donc il ne devrait pas y avoir de problème avec la transaction. Que se passe-t-il? :-(

+0

encore obtenu cette erreur, mais j'ai pu créer SQL en ajoutant temporairement: def get_table_list (self, curseur): retour [] « Retourne une liste des noms de table dans la base de données actuelle. » dans le fichier /usr/lib/pymodules/python2.6/django/db/backends/postgresql/introspection.py Toujours une erreur lors de l'utilisation d'autres commandes – Ziells

Répondre

3

Cette erreur signifie que quelque chose est arrivé à votre processus de Postgres qui l'a fait échouer au milieu d'une transaction, mais la transaction n'a jamais été validée ou annulée, il est donc coincé. En fait

vous devez soit émettre une commande rollback (ceci peut être fait à partir du shell Django, souvent), soit tuer le processus postgres

Notez que (selon la configuration de votre serveur) les processus Postgres continuent de fonctionner même si Django ne l'est pas, donc vous ' Vous obtenez la même erreur à chaque fois, car il est probablement toujours coincé dans le même processus

Si vous l'avez fait et que c'est encore faire cela à chaque fois, cela signifie que vous déclenchez l'erreur dans votre code réel quelque part et que vous devez creuser.

+0

Cela m'arrive aussi à moi et c'est quelque chose à voir avec les modèles. Avec mysql backend c'est plus tolérant, mais je pense qu'il y a vraiment quelque chose d'étrange qui se passe. –

Questions connexes