Estoy siguiendo los pasos en el Django Book y llegué a la parte donde los autores explican que hot wo configuró un proyecto django para usar una base de datos. Elegí mysql.ImportError: Ningún módulo llamado mysql.base, en el proyecto django en el servidor Ubuntu 11.04
Mi configuración en settings.py
son:
DATABASES = {
'default': {
'ENGINE': 'mysql', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.
'NAME': 'mydatabase', # Or path to database file if using sqlite3.
'USER': 'myname', # Not used with sqlite3.
'PASSWORD': 'mypassword', # Not used with sqlite3.
'HOST': '', # Set to empty string for localhost. Not used with sqlite3.
'PORT': '', # Set to empty string for default. Not used with sqlite3.
}
}
Al intentar iniciar el servidor, el siguiente mensaje se imprime:
Validating models...
Traceback (most recent call last):
File "/home/me/workspace/mysite/src/mysite/manage.py", line 14, in <module>
execute_manager(settings)
File "/usr/local/lib/python2.7/dist-packages/django/core/management/__init__.py", line 442, in execute_manager
utility.execute()
File "/usr/local/lib/python2.7/dist-packages/django/core/management/__init__.py", line 379, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/usr/local/lib/python2.7/dist-packages/django/core/management/base.py", line 191, in run_from_argv
self.execute(*args, **options.__dict__)
File "/usr/local/lib/python2.7/dist-packages/django/core/management/base.py", line 220, in execute
output = self.handle(*args, **options)
File "/usr/local/lib/python2.7/dist-packages/django/core/management/commands/runserver.py", line 67, in handle
self.run(*args, **options)
File "/usr/local/lib/python2.7/dist-packages/django/core/management/commands/runserver.py", line 78, in run
self.inner_run(*args, **options)
File "/usr/local/lib/python2.7/dist-packages/django/core/management/commands/runserver.py", line 88, in inner_run
self.validate(display_num_errors=True)
File "/usr/local/lib/python2.7/dist-packages/django/core/management/base.py", line 243, in validate
from django.core.management.validation import get_validation_errors
File "/usr/local/lib/python2.7/dist-packages/django/core/management/validation.py", line 3, in <module>
from django.contrib.contenttypes.generic import GenericForeignKey, GenericRelation
File "/usr/local/lib/python2.7/dist-packages/django/contrib/contenttypes/generic.py", line 7, in <module>
from django.db import connection
File "/usr/local/lib/python2.7/dist-packages/django/db/__init__.py", line 27, in <module>
connection = connections[DEFAULT_DB_ALIAS]
File "/usr/local/lib/python2.7/dist-packages/django/db/utils.py", line 81, in __getitem__
backend = load_backend(db['ENGINE'])
File "/usr/local/lib/python2.7/dist-packages/django/db/utils.py", line 23, in load_backend
return import_module('.base', backend_name)
File "/usr/local/lib/python2.7/dist-packages/django/utils/importlib.py", line 35, in import_module
__import__(name)
ImportError: No module named mysql.base
Busqué en Google un poco, y se informó que este mensaje podría ser impreso si usa una versión anterior de MySQLd. Así que me aseguré de obtener la última versión. Y probé la importación en un shell de python interactivo. Está bien.
¿Alguna otra sugerencia, por qué esto no funciona?
Estoy trabajando en una nueva versión Ubuntu 11.04 instalada (Wubi en Windows 7), si eso es lo que importa. =)
¿Qué versión de Django está ejecutando? 1.2.5 del paquete 'python-django' 1.3 del sitio web del proyecto? –
Al ver el código fuente de 'django.db.utils.load_backend()', creo que debería usar ''django.db.backends.mysql'' en lugar de' 'mysql''. Esto probablemente solo le dará un mensaje de error diferente, pero uno más útil. –
@Tim Yates: estoy usando la versión ''django.db.backends.mysql''. Lo revisé ayer desde el baúl, como se recomienda en el libro. Establecer 'ENGINE' a''django.db.backends.mysql'' en lugar de ''mysql'' hizo el trabajo. Muchas gracias MUC, @Tim. – Aufwind