2016-11-16 47 views
2

我最初有一個應用程序的django項目,所有模型都在該應用程序中定義。該項目啓動時僅使用默認數據庫。現在它已經變成一個笨拙的應用程序,我試圖分解成更小的應用程序。這樣做,我想爲不同的應用程序使用不同的數據庫。我在settings.py文件中設置了新的數據庫和路由器。但是,我對如何將現有表遷移到新數據庫感到困惑。Django將表遷移到新的數據庫

DATABASES = { 
    'default': { 
     'ENGINE': 'django.db.backends.mysql', 
     'NAME': 'db_name', 
     'USER': 'db_user_name', 
     'PASSWORD': 'password', 
     'HOST': 'hostname', 
     'PORT': '3306', 
    }, 
    'db2': { 
     'ENGINE': 'django.db.backends.mysql', 
     'NAME': 'db_name2', 
     'USER': 'db_user_name2', 
     'PASSWORD': 'password2', 
     'HOST': 'hostname2', 
     'PORT': '3306', 
    }  
} 

我想要一個應用程序(例如app1)從默認移動到db2。路由器已經知道指定app1到db2,但運行遷移沒有任何作用。有任何想法嗎?

+0

您是否使用'--database = db2'標誌運行'manage.py migrate'? – knbk

+0

當我嘗試,我得到以下錯誤:'RuntimeError:創建新的內容類型時出錯。請確保在嘗試單獨遷移應用程序之前遷移內容類型 – user2694306

回答

4

@ knbk的答案最終是正確的,只是解決方案涉及一個額外的步驟。

1. python manage.py migrate auth --database=db2 
2. python manage.py migrate app1 --database=db2