#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.