我正在尝试编写一系列示例,让读者逐步构建 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
并不能解决问题)。 Google 和官方文档也无济于事。
我正在采取的步骤:首先,我在 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.
我错过了什么?
最佳答案
Mezzanine 项目基于 Python 框架 Django。
除非您遇到夹层特定的问题,否则大多数问题都可以通过弄清楚它是如何以 Django 方式完成的来解决的。
迁移 只是 Django 引用更改和修改的方式在 数据库中,即模式(因为应用程序在发展,数据库是变形的)。
为了实际迁移数据,您可以:
从当前数据库中导出内容,eg:
./manage.py dumpdata > db-dump-in-json.json
./manage.py --format=xml > db-dump-in-xml.xml
如果数据太多或内存不足,这可能会崩溃。然后就是使用 native 数据库工具来获取转储。
在
settings.py
中为新数据库创建和添加设置:创建表并在新定义的数据库上设置它们(基于您的模型):
./manage.py makemigrations
./manage.py 迁移
createdb
= syncdb
(创建)+ migrate
(设置)合并
并在那里重新加载导出的数据:
./manage.py loaddata db-dump-in-json.json
关于python - 在夹层中切换数据库后端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40067806/