Vous utilisez django ? En version <= 1.3.1 ?

Vous utilisez postgresql ? (qui utiliserait encore mysql...)

Vous venez de mettre à jour votre (k)unbutu en oneiric ?

Jusque là, tout va bien.

mais d'un coup soudain votre navigateur vous affichera un méchant message au lieu de votre belle page :

 Exception Value: current transaction is aborted, commands ignored until end of transaction block

Ou alors (car ce n'est pas systématique) un jour vous allez lancer un test de votre application django.

Et là c'est le drame :

 psycopg2.ProgrammingError: autocommit cannot be used inside a transaction

MAIS !!??

Le coupable est identifié : psycopg2 qui, en version 2.4.2, casse plus ou moins django.

Le bug est référencé sur le tracker django : https://code.djangoproject.com/ticket/16250

Il est "fixé" mais comme indiqué dans le dernier commentaire, le fix n'est pas dans django 1.3.1 et ne sera donc disponible qu'à partir de django 1.4.

Comment faire ?

Simple.

Il faut donc utiliser psycopg 2.4.1 au lieu de psycopg 2.4.2 fourni avec la dernière ubuntu. Malheureusement le paquet n'est pas disponible.

Pas grave, nous allons le faire à la main !

Avant tout cela vous voudrez peut-être supprimer la version 2.4.2 de psycopg de votre système, dans ce cas :

 sudo apt-get --purge remove python-psycopg2

Puis on commence par installer dans le système les paquets nécessaires à la compilation (n'ayez pas peur) de psycopg2 :

 sudo apt-get build-dep python-psycopg2

Et enfin on va installer la version voulue via pip (mettez sudo si vous n'êtes pas dans un virtualenv) :

 pip install psycopg2==2.4.1

Et voilà tout remarche comme avant !