2016-10-16 48 views
0

我正在嘗試編寫一系列示例,其中讀者逐漸構建Web應用程序。第一階段發生與夾層的默認配置,使用內置的SQLlite:在Mezzanine中切換數據庫後端

sudo pip install mezzanine 
sudo -u mezzanine python manage.py createdb 

初始例子完成後,我想將現有的設置切換到MySQL後端。如果這太複雜了,我至少要重新創建內置的例子來與在新的後端夾層,夾層,但不會允許重新運行createdb

CommandError: Database already created, you probably want the migrate command 

這似乎喜歡的事,應該是非常簡單的,但我似乎無法完全理解(單獨使用migrate並不能解決問題)。谷歌和官方文檔也沒有幫助。

我正在採取的步驟:首先,我在Amazon RDS上創建一個MySQL數據庫。然後,我在myapp/local_settings中爲它設置了適當的配置(我確定這些步驟是正確的)。然後:

sudo apt install python-mysqldb 
sudo -u mezzanine python /srv/mezzanine/manage.py migrate 

但隨後:

Running migrations: 
    No migrations to apply. 

我缺少什麼?

回答

3

Mezzanine項目基於Python框架Django。
除非遇到Mezzanine特定問題,否則大多數問題都可以通過計算Django的完成方式來解決。

遷移只是Django的指的內改變&修訂的DB,即架構(因爲應用發展&數據庫是變質)的方式。

但是,爲了實際遷移數據。您可以:

  1. 導出從當前數據庫的內容,如:

    ./manage.py dumpdata> DB-自卸式-json.json
    ./manage.py --format = XML>分貝轉儲式-xml.xml

這可能崩潰,如果噸這裏數據太多或內存不足。然後,將使用本地數據庫工具來獲取轉儲

創建和 settings.py添加設置新DB
  • 創建表和設置他們(根據您的模型)上新定義的DB:

    ./manage.py makemigrations
    ./manage。PY遷移

  • createdb = syncdb(創建)+ migrate(組)組合

  • 並重新加載導出的數據有:

    ./ manage.py loaddata db-dump-in-json.json

  • +0

    syncdb似乎並不存在Django 1.10和Mezzanine 4中的nymore ...是否現在遷移--run-syncdb? – 0xF2

    +0

    看起來像是在教程中遷移數據的太多步驟 - 可能正確的解決方案是弄清楚如何說服夾層在新數據庫(createdb)中再次設置其默認示例,理想情況下不需要卸載它。 。 – 0xF2