#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 django-updates+unsubscr...@googlegroups.com.
To post to this group, send email to django-updates@googlegroups.com.
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.

Reply via email to