在Mezzanine中切换数据库后端

时间:2016-10-16 07:07:58

标签: python mysql django mezzanine

我正在尝试编写一系列示例,其中读者逐步构建Web应用程序。第一阶段使用Mezzanine的默认配置,使用内置的SQLlite:

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

初始示例完成后,我想将现有设置切换到mysql后端。如果这太复杂了,我至少想在新的后端重新创建Mezzanine附带的内置示例,但Mezzanine不允许重新运行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.

我错过了什么?

1 个答案:

答案 0 :(得分:3)

Mezzanine项目基于Python框架Django 除非您遇到Mezzanine特定的问题,否则大多数问题都可以通过弄清楚它是如何完成Django的方式来解决。

迁移只是Django引用变更的方式&修改数据库中,即模式(因为应用程序的发展和数据库是变形的)。

为了实际迁移数据,您可以:

  1. 从当前数据库导出内容,例如:

    ./ manage.py dumpdata> DB-转储功能于json.json
    ./manage.py --format = xml>分贝转储式-xml.xml

  2. 如果数据太多或内存不足,可能会崩溃。然后就是使用本机数据库工具来获取 dump

    1. settings.py中为新数据库创建和添加设置:

    2. 在新定义的数据库上创建表格并进行设置(基于模型):

      ./ manage.py makemigrations
      ./manage.py migrate

    3. createdb = syncdb(创建)+ migrate(已设置)合并

      1. 并在那里重新加载导出的数据:

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