我正在尝试编写一系列示例,其中读者逐步构建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.
我错过了什么?
答案 0 :(得分:3)
Mezzanine项目基于Python框架Django 除非您遇到Mezzanine特定的问题,否则大多数问题都可以通过弄清楚它是如何完成Django的方式来解决。
迁移只是Django引用变更的方式&修改在数据库中,即模式(因为应用程序的发展和数据库是变形的)。
为了实际迁移数据,您可以:
从当前数据库导出内容,例如:
./ manage.py dumpdata> DB-转储功能于json.json
./manage.py --format = xml>分贝转储式-xml.xml
如果数据太多或内存不足,可能会崩溃。然后就是使用本机数据库工具来获取 dump 。
在settings.py
中为新数据库创建和添加设置:
在新定义的数据库上创建表格并进行设置(基于模型):
./ manage.py makemigrations
./manage.py migrate
createdb
= syncdb
(创建)+ migrate
(已设置)合并
并在那里重新加载导出的数据:
./ manage.py loaddata db-dump-in-json.json