#27164: Multiple problems with multiple database docs for 1.8 and possibly other
versions
----------------------------------------------+----------------------------
Reporter: michaelcoconnor | Owner: nobody
Type: Bug | Status: new
Component: Database layer (models, ORM) | Version: 1.8
Severity: Normal | Keywords: multiple
| databases docs
Triage Stage: Unreviewed | Has patch: 0
Easy pickings: 1 | UI/UX: 0
----------------------------------------------+----------------------------
I am running (1, 8, 7, 'final', 0); this ticket pertains specifically to
https://docs.djangoproject.com/en/1.8/topics/db/multi-db/ and to the code
snippets in it.
First, in the discussion of Database Routers and in the code for the
router AuthRouter(), the declaration of the method controlling migrations
is allow_migrate(db, app_label, model_name=None, *hints), which is stated
to be new in 1.8, the 1.7 version having been deprecated. However, in
reality in (1, 8, 7, 'final', 0) only the 1.7 version of this method
works.
Secondly, the AuthRouter() code is designed to only permit apps with
app_label =='auth' to be migrated to the database of the same name--- all
other apps spill over, via the PrimaryReplicaRouter(), to one of the other
databases and are migrated there. However, at the bottom of the page it
clearly states that "auth models — User, Group and Permission — are linked
together and linked to ContentType, so they must be stored in the same
database as ContentType". Thus, unless django_content_type is somehow
naturally given an app_label of 'auth', it would appear that this is a
contradiction.
The third matter is the 'default': {} recommendation. With several tries I
only get an error message to the effect that {} can't be empty.
In all it appears that the given code was never tested.
I can recommend a simple example, for which the painful "Example purposes
only!" disclaimer should be unnecessary. I am now happy with one database
being 'default':{...}, with the name of the database being also 'default'.
For that one I provide no router at all. For two others I use an
AuthRouter()-type that rigidly connects each of two apps of my own to a
corresponding database of the two. And so only the two routers for the two
databases are in the settings.py router chain.
With that, I have thrown away the migrations folders and checked to be
sure that the makemigrations-migrate sequence does the correct migrations.
It does--- the auth models and django_site, django_session,
django_migrations and django_content_type all end up in the 'default'
database; my models end up in the others.
Finally, "admin depends on auth, so their models must be in the same
database as auth" should be corrected (e.g. "its models").
--
Ticket URL: <https://code.djangoproject.com/ticket/27164>
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].
To view this discussion on the web visit
https://groups.google.com/d/msgid/django-updates/058.c394e779708e5c7744386df591fa910f%40djangoproject.com.
For more options, visit https://groups.google.com/d/optout.