views:

49

answers:

1
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql', # Add 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'.
        'NAME': 'djangobb',                      # Or path to database file if using sqlite3.
        'USER': 'root',                      # Not used with sqlite3.
        'PASSWORD': 'root',                  # 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.
    }
}

Any ideas? I cannot run the syncdb command with manage.py:

    Environment:

Request Method: GET
Request URL: http://localhost:8000/admin/
Django Version: 1.2.1
Python Version: 2.5.4
Installed Applications:
['django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.sites',
 'django.contrib.sitemaps',
 'django.contrib.admin',
 'django.contrib.admindocs',
 'registration',
 'django_authopenid',
 'djangobb_forum',
 'djapian',
 'messages']
Installed Middleware:
('django.middleware.cache.UpdateCacheMiddleware',
 'django.middleware.common.CommonMiddleware',
 'django.contrib.sessions.middleware.SessionMiddleware',
 'django.middleware.locale.LocaleMiddleware',
 'django.contrib.auth.middleware.AuthenticationMiddleware',
 'django.contrib.csrf.middleware.CsrfMiddleware',
 'django_authopenid.middleware.OpenIDMiddleware',
 'django.middleware.cache.FetchFromCacheMiddleware',
 'django.middleware.transaction.TransactionMiddleware',
 'djangobb_forum.middleware.LastLoginMiddleware',
 'djangobb_forum.middleware.UsersOnline')


Traceback:
File "C:\Python25\Lib\site-packages\django\core\handlers\base.py" in get_response
  80.                     response = middleware_method(request)
File "C:\Python25\Lib\site-packages\django\middleware\locale.py" in process_request
  16.         language = translation.get_language_from_request(request)
File "C:\Python25\Lib\site-packages\django\utils\translation\__init__.py" in get_language_from_request
  90.     return real_get_language_from_request(request)
File "C:\PYTHON25\lib\site-packages\django\utils\functional.py" in _curried
  55.         return _curried_func(*(args+moreargs), **dict(kwargs, **morekwargs))
File "C:\Python25\Lib\site-packages\django\utils\translation\__init__.py" in delayed_loader
  36.     return getattr(trans, real_name)(*args, **kwargs)
File "C:\Python25\Lib\site-packages\django\utils\translation\trans_real.py" in get_language_from_request
  339.         lang_code = request.session.get('django_language', None)
File "C:\Python25\Lib\site-packages\django\contrib\sessions\backends\base.py" in get
  63.         return self._session.get(key, default)
File "C:\Python25\Lib\site-packages\django\contrib\sessions\backends\base.py" in _get_session
  172.                 self._session_cache = self.load()
File "C:\Python25\Lib\site-packages\django\contrib\sessions\backends\db.py" in load
  20.                 expire_date__gt=datetime.datetime.now()
File "C:\Python25\lib\site-packages\django\db\models\manager.py" in get
  132.         return self.get_query_set().get(*args, **kwargs)
File "C:\Python25\Lib\site-packages\django\db\models\query.py" in get
  336.         num = len(clone)
File "C:\Python25\Lib\site-packages\django\db\models\query.py" in __len__
  81.                 self._result_cache = list(self.iterator())
File "C:\Python25\Lib\site-packages\django\db\models\query.py" in iterator
  269.         for row in compiler.results_iter():
File "C:\Python25\Lib\site-packages\django\db\models\sql\compiler.py" in results_iter
  672.         for rows in self.execute_sql(MULTI):
File "C:\Python25\Lib\site-packages\django\db\models\sql\compiler.py" in execute_sql
  717.             sql, params = self.as_sql()
File "C:\Python25\Lib\site-packages\django\db\models\sql\compiler.py" in as_sql
  56.         out_cols = self.get_columns(with_col_aliases)
File "C:\Python25\Lib\site-packages\django\db\models\sql\compiler.py" in get_columns
  185.                     col_aliases)
File "C:\Python25\Lib\site-packages\django\db\models\sql\compiler.py" in get_default_columns
  273.                 r = '%s.%s' % (qn(alias), qn2(field.column))
File "C:\Python25\Lib\site-packages\django\db\models\sql\compiler.py" in quote_name_unless_alias
  43.         r = self.connection.ops.quote_name(name)
File "C:\Python25\lib\site-packages\django\db\backends\dummy\base.py" in complain
  15.     raise ImproperlyConfigured("You haven't set the database ENGINE setting yet.")

Exception Type: ImproperlyConfigured at /admin/
Exception Value: You haven't set the database ENGINE setting yet.
+1  A: 

I set mine the old way and the new way, so that it's not django-version-specific:

DATABASE_ENGINE   = 'django.db.backends.sqlite3'
DATABASE_NAME     = '/path/to/db/foo.sqlite3'
DATABASE_USER     = ''
DATABASE_PASSWORD = ''
DATABASE_HOST     = ''
DATABASE_PORT     = ''

DATABASES = {
  'default': {
    'ENGINE':   DATABASE_ENGINE,
    'NAME':     DATABASE_NAME,
    'USER':     DATABASE_USER,
    'PASSWORD': DATABASE_PASSWORD,
    'HOST':     DATABASE_HOST,
    'PORT':     DATABASE_PORT,
  }
}

But yeah, I'd double check that your installation is the version you think.

UPDATE:

You may be trying to import something from settings in an admin module, and importing the admin module in settings. Sometimes circular-imports result in the above.

In particular, using reverse("url-name") within settings can cause this, because it ends up forcing it to look at the "site" table at some deep-dark level...

UPDATE2:

Sorry, to explain the above:

  • A circular import is when a module A imports from module B, and at some level, module B also needs stuff from module A. At some point during that second level of depth, it generally fails in some inscrutable way.
  • Reverse() is the function to turn a url's name (the name="foo" in urls.py) back into the url itself. This makes calls that are not always possible in settings or admin modules.

UPDATE3:

Looking at the ticket djangobb.org/ticket/81 you pointed to, to break some of the terms down, the csrf token is a template tag used to add Cross Site Request Forgery protection:

http://docs.djangoproject.com/en/dev/ref/contrib/csrf/

It generally looks like this, to grep from a project of mine:

# grep -ri csrf .
  ./registration/login.html:  <form method="post" action="{% url django.contrib.auth.views.login %}">{% csrf_token %}

The bit about the trunk of djapian, though I don't know what djapian is myself, generally means a direct install of the (typically svn) trunk -- or "most up to date, checked in version, which is newer than any release, and possibly tested, official version". Typically, this involves doing something like an svn checkout http://wherever.com/someproject/trunk/ ./someproject and then going to that directory to install.

eruciform
+1: We've been following eachother around all morning :). This is a good suggestion, and I need to go back and update a few apps that we're created using 1.2, but could also be used w/1.1.
sdolan
:-) thanks. yeah this one killed me for a while when i moved from 1.1 to 1.2. also an inverse-porting from python 2.6 to 2.4 messed me up badly, as a few libraries depend on the "foo if bar else baz" syntax. i ended up having to install python from scratch on a virtual host just to get 2.6. :-P
eruciform
I have tried both configuration methods -- djangobb did initially come with the former style in settings.py (I'm assuming this is the previous 1.1 method for database configuration), but again it fails.
Brian D
updated. might be a circular import or use of reverse() in settings or admin modules.
eruciform
Sorry, but I'm pretty new to web development and django... what does that mean :P
Brian D
I don't know where to look .. the settings file looks ok (I didn't see any reverse()... checking admin files, just found them :]). I have django-cms up and running, but this is specific to djangobb
Brian D
Nah. Nothing noteworthy. I have a feeling it's a result of me running django 1.2 and djangobb requiring 1.1.
Brian D
sorry about that, updated with some answers. but you may be right, it may come down to djangobb not being ported to django1.2 yet. but if you use the above and go back to 1.1, then your re-port back to django1.2 later will be less painful.
eruciform
Thanks for the clarification. While I've got your attention, could you explain what they are referring to with the term forms in this porting ticket (with your best guess, I will assume no one in particular uses djangobb): http://djangobb.org/ticket/81.
Brian D
sure. updated answer for you. :-)
eruciform
awesome, thanks for your help once again! :)
Brian D