#19775 closed Bug (fixed)
database configuration without "default" not supported
| Reported by: | monkut | Owned by: | Warren Smith |
|---|---|---|---|
| Component: | Documentation | Version: | 1.4 |
| Severity: | Normal | Keywords: | multipledbs |
| Cc: | warren@… | Triage Stage: | Accepted |
| Has patch: | yes | Needs documentation: | no |
| Needs tests: | no | Patch needs improvement: | no |
| Easy pickings: | no | UI/UX: | no |
Description (last modified by )
For version 1.4 and dev documentation on multiple databases the text seems to imply that you can choose not to define a "default" db
https://docs.djangoproject.com/en/1.4/topics/db/multi-db/#defining-your-databases
... Django uses the database with the alias of default when no other database has been selected. If you don’t have a default database, you need to be careful to always specify the database that you want to use.
However, when you actually remove, or do not include a "default" and attempt to syncdb with Postgresql, you get the following error that explicitly tells you, that you *must* define a "default" database:
>python manage.py syncdb
Traceback (most recent call last):
File "manage.py", line 16, in <module>
execute_manager(settings)
File "C:\Python27\lib\site-packages\django\core\management\__init__.py", line 459, in execute_manager
utility.execute()
File "C:\Python27\lib\site-packages\django\core\management\__init__.py", line 382, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "C:\Python27\lib\site-packages\django\core\management\__init__.py", line 261, in fetch_command
klass = load_command_class(app_name, subcommand)
File "C:\Python27\lib\site-packages\django\core\management\__init__.py", line 69, in load_command_class
module = import_module('%s.management.commands.%s' % (app_name, name))
File "C:\Python27\lib\site-packages\django\utils\importlib.py", line 35, in import_module
__import__(name)
File "C:\Python27\lib\site-packages\django\core\management\commands\syncdb.py", line 8, in <module>
from django.core.management.sql import custom_sql_for_model, emit_post_sync_signal
File "C:\Python27\lib\site-packages\django\core\management\sql.py", line 6, in <module>
from django.db import models
File "C:\Python27\lib\site-packages\django\db\__init__.py", line 12, in <module>
raise ImproperlyConfigured("You must define a '%s' database" % DEFAULT_DB_ALIAS)
django.core.exceptions.ImproperlyConfigured: You must define a 'default' database
Attachments (1)
Change History (10)
comment:1 by , 13 years ago
| Description: | modified (diff) |
|---|---|
| Triage Stage: | Unreviewed → Accepted |
comment:2 by , 13 years ago
If I specify a default database as so, the application and tests run:
DATABASES = {
'default': { # Leave this blank, we do not want a 'default' database defined.
'ENGINE': '',
'NAME': '',
'USER': '',
'PASSWORD': '',
'HOST': '',
'PORT': '',
},
...
}
But it would be better if nothing needed to be defined at all.
comment:3 by , 13 years ago
| Owner: | changed from to |
|---|---|
| Status: | new → assigned |
The language "don't have a default database" was a bit ambiguous. On the assumption that it was referring to the business problem and not the settings file (since Django won't work without a default entry), I said that plainly and also stated that Django requires a default database entry.
comment:4 by , 13 years ago
| Cc: | added |
|---|---|
| Has patch: | set |
comment:5 by , 13 years ago
| Resolution: | → fixed |
|---|---|
| Status: | assigned → closed |
by , 13 years ago
| Attachment: | default_database_entry_required_clarification.diff added |
|---|
comment:7 by , 13 years ago
At Jacob's urging, I improved the documentation patch to include a settings.py example.
I think that not depending on a specific database alias might be a desirable goal for the future. However, this will need some more cleanup regarding
django.db.connection(see for example #13528).Meanwhile, updating the documentation seems the right thing to do at short term.