#19775: database configuration without "default" not supported
-------------------------------+------------------------------------
Reporter: monkut | Owner: nobody
Type: Bug | Status: new
Component: Documentation | Version: 1.4
Severity: Normal | Resolution:
Keywords: multipledbs | Triage Stage: Accepted
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
-------------------------------+------------------------------------
Changes (by claudep):
* needs_better_patch: => 0
* needs_docs: => 0
* needs_tests: => 0
* stage: Unreviewed => Accepted
Old description:
> 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
New description:
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
}}}
--
Comment:
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.
--
Ticket URL: <https://code.djangoproject.com/ticket/19775#comment:1>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.
--
You received this message because you are subscribed to the Google Groups
"Django updates" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.