2016-10-16 123 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