Pourquoi Django ne considère-t-il plus mysqldb comme un backend valide?

Je pose la question suivante ici, car elle implique des outils de développement.

J’ai mis à niveau ma station de travail Ubuntu 10.04 LTS vers 12.04 LTS (32 bits). Aujourd’hui, je suis allé essayer une application Web Django qui fonctionnait sans erreurs. Il fonctionne sur Apache.

L’application ne fonctionne plus et renvoie une erreur. J’ai travaillé sur une série d’erreurs, toutes situées dans /var/log/apache2/error.log .

La première erreur concernait UCS2 et UCS4 (lignes réduites pour la lisibilité).

 ImportError: /usr/local/lib/python2.7/lib-dynload/_io.so: undefined symbol: PyUnicodeUCS2_FromObject mod_wsgi (pid=9246): Target WSGI script '/usr/local/www/wsgi-scripts/wsgi_amr_handler.py' cannot be loaded as Python module. 

Cela a été effacé en reconstruisant et en réinstallant la dernière version de mod_wsgi.

L’erreur actuelle implique que mysqldb ne soit pas un backend valide. Voici l’erreur (horodatage supprimé pour plus de clarté):

 backend = load_backend(db['ENGINE']) File "/usr/local/lib/python2.7/site-packages/django/db/utils.py", line 51, in load_backend raise ImproperlyConfigured(error_msg) ImproperlyConfigured: 'mysql' isn't an available database backend. Try using django.db.backends.mysql instead. Error was: No module named mysql.base 

Est-ce un problème de configuration dans les parameters de l’application Django ou autre chose?

Existe-t-il un ordre d’installation pour Python 2.7, mod_wsgi, Django et mysqldb, et cela pourrait-il être le problème?

Voici mon actuel (après avoir reçu des commentaires) settings.py

 DATABASES = { 'default': { 'ENGINE': ' django.db.backends.mysql', 'NAME': 'server', # Or path to database file if using sqlite3. 'USER': 'ox', # Not used with sqlite3. 'PASSWORD': 'xxxx', # Not used with sqlite3. 'HOST': '', 'PORT': '', } } 

Voici les erreurs:

 ImproperlyConfigured: ' django.db.backends.mysql' isn't an available database backend. Try using django.db.backends.XXX, where XXX is one of: 'dummy', 'mysql', 'oracle', 'postgresql_psycopg2', 'sqlite3' Error was: No module named django.db.backends.mysql.base 

Vous avez apparemment mis à jour votre installation de Django. Les versions récentes de Django ont besoin du nom complet du module backend. La façon dont vous spécifiez les bases de données a été modifiée dans la version 1.2 et vous devrez suivre les notes de mise à niveau pour mettre à jour votre base de code de projet Django.

Pour MySQL, le backend correct est maintenant django.db.backends.mysql ; ouvrez settings.py et mettez à jour votre entrée DATABASES .