title: Migrate command create all tables on second DB - Django
body: <p>I have an app (<code>ali</code>) on my project (<code>website</code>) and I wanted it to have its own database. The problem is, when I run <code>python manage.py migrate --database=ali</code>, the command recreates all tables within my <code>ali</code> database; whereas the expected result would be to have only the <code>ali_search</code> database.</p>
  
  <p>P.S.: <em>the application seems to be running as expected</em> after I ran some tests. In other words, models from my <code>ali</code> app are being saved on the <code>ali</code> DB. Still, having all these empty tables inside my <code>ali</code> DB is not the correct way to go.</p>
  
  <p>Settings:</p>
  
  <pre><code># website.settings
  
  ...
  
  INSTALLED_APPS = [
      'base.apps.BaseConfig',
      'ali.apps.AliConfig',
      'django.contrib.admin',
      'django.contrib.auth',
      'django.contrib.sites',
      'django.contrib.contenttypes',
      'django.contrib.sessions',
      'django.contrib.messages',
      'django.contrib.staticfiles',
      'django.contrib.sitemaps',
      'django_comments',
      'mptt',
      'tagging',
      'zinnia',
  ]
  
  ....
  
  DATABASES = {
      'default': {
          'ENGINE': 'django.db.backends.postgresql_psycopg2',
          'NAME': 'website',
          'USER': 'website',
          'PASSWORD': 'website',
          'HOST': 'localhost',
          'PORT': '5432',
      },
      'ali': {
          'ENGINE': 'django.db.backends.postgresql_psycopg2',
          'NAME': 'ali',
          'USER': 'ali',
          'PASSWORD': 'ali',
          'HOST': 'localhost',
          'PORT': '5432',
      }
  }
  
  DATABASE_ROUTERS = [
      'ali.routers.AliRouter',
  ]
  
  ....
  </code></pre>
  
  <p>Router:</p>
  
  <pre><code># ali.routers
  
  class AliRouter:
      def db_for_read(self, model, **hints):
          if model._meta.app_label == 'ali':
              return 'ali'
          return None
  
      def db_for_write(self, model, **hints):
          if model._meta.app_label == 'ali':
              return 'ali'
          return None
  
      def allow_relation(self, obj1, obj2, **hints):
          if obj1._meta.app_label == 'ali' or \
             obj2._meta.app_label == 'ali':
             return True
          return None
  
      def allow_migrate(self, db, app_label, model_name=None, **hints):
          if app_label == 'ali':
              return db == 'ali'
          return None
  </code></pre>
  
  <p>Model:</p>
  
  <pre><code># ali.models
  
  from django.db import models
  
  class Search(models.Model):
  
      results = models.IntegerField()
  </code></pre>
  
  <p>This is what I get by querying my ali DB with <code>\dt</code>:</p>
  
  <pre><code>ali=# \dt
                    List of relations
   Schema |            Name            | Type  | Owner 
  --------+----------------------------+-------+-------
   public | ali_search                 | table | ali
   public | auth_group                 | table | ali
   public | auth_group_permissions     | table | ali
   public | auth_permission            | table | ali
   public | auth_user                  | table | ali
   public | auth_user_groups           | table | ali
   public | auth_user_user_permissions | table | ali
   public | django_admin_log           | table | ali
   public | django_comment_flags       | table | ali
   public | django_comments            | table | ali
   public | django_content_type        | table | ali
   public | django_migrations          | table | ali
   public | django_session             | table | ali
   public | django_site                | table | ali
   public | tagging_tag                | table | ali
   public | tagging_taggeditem         | table | ali
   public | zinnia_category            | table | ali
   public | zinnia_entry               | table | ali
   public | zinnia_entry_authors       | table | ali
   public | zinnia_entry_categories    | table | ali
   public | zinnia_entry_related       | table | ali
   public | zinnia_entry_sites         | table | ali
  (22 rows)
  </code></pre>
  
  <p>But what I would really expect is:</p>
  
  <pre><code>ali=# \dt
                    List of relations
   Schema |            Name            | Type  | Owner 
  --------+----------------------------+-------+-------
   public | ali_search                 | table | ali
  (1 row)
  </code></pre>
  
  <p>Could it be a problem the fact that the app has the same name as the database (in this case, <strong>ali</strong>)?</p>