2011-05-25 15 views
6

Django Book'daki adımları izliyorum ve yazarların bir veritabanını kullanmak için bir django projesinin kurulumunu açıkladıkları yere geldim. Mysql'i seçtim. settings.py yılındaImportError: Ubuntu 11.04 sunucusunda django projesinde mysql.base adında bir modül yok

My ayarları şunlardır:

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

sunucusunu başlatmaya çalışırken, aşağıdaki ileti yazdırılır:

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 

Biraz googled ve öğrendim bu mesaj olabileceğini MySQLd'nin eski bir sürümünü kullanırsanız yazdırılır. Bu yüzden en son sürüme sahip olduğumdan emin oldum. Ve ithalatı interaktif bir python kabuğunda test ettim. Bu iyi.

Diğer öneriler, neden çalışmıyor?

Önemliyse, yeni kurulmuş bir Ubuntu 11.04 Sürümü (Windows 7'de Wubi) üzerinde çalışıyorum. =

+0

Django'nun hangi sürümü çalışıyorsunuz? Python-django' paketinden 1.2.5? Proje web sitesinden 1.3? –

+1

django.db.utils.load_backend() 'için kaynak koduna baktığımda, sadece '' mysql '' yerine' django.db.backends.mysql 'kullanmanız gerektiğini düşünüyorum. Bu muhtemelen size sadece farklı bir hata mesajı verecektir, ancak daha yararlı olacaktır. –

+0

@Tim Yates: 'django.db.backends.mysql' sürümünü kullanıyorum. Kitabın önerdiği gibi, dün sabah bagajdan kontrol ettim. '' Mysql'' yerine 'MOTOR'ı' 'django.db.backends.mysql'' ayarlaması işi yaptı. Çok teşekkür ederim, Tim. – Aufwind

cevap

18

Doğru database setting, 'django.db.backends.mysql' şeklindedir.

+1

Peki, bu arka uç ayarının "manage.py inspectdb" ifadesinin ardından bu hatayı oluşturması durumunda; django.core.exceptions.ImproperlyConfigured: 'django.db.backends.mysql' kullanılabilir bir veritabanı arka uç değildir. ' –

İlgili konular