【问题标题】:Using South migrations with IBM Bluemix通过 IBM Bluemix 使用 South 迁移
【发布时间】:2015-09-17 05:00:15
【问题描述】:

对于使用 Django 1.6 的新应用程序,我正在尝试创建一个 run.sh,它将在 Bluemix 上运行初始命令。

我找到了一个答案 here,它为 Django 1.7+ 支持的内置迁移提供了一个 run.sh 文件

#!/bin/bash

 if [ -z "$VCAP_APP_PORT" ];
 then SERVER_PORT=80;
 else SERVER_PORT="$VCAP_APP_PORT";
 fi

 echo [$0] port is------------------- $SERVER_PORT

 python manage.py makemigrations
 python manage.py migrate

 echo "from django.contrib.auth.models import User; User.objects.create_superuser(username='username',password='password',email='you@example.com')" | python manage.py shell

 echo [$0] Starting Django Server...
 python manage.py runserver --noreload 0.0.0.0:$SERVER_PORT 

是否有一种幂等方式在 South 中运行等效命令(schemamigration --automigrate)?

【问题讨论】:

  • 在 South 运行命令是什么意思?
  • 查看示例应用程序github.com/fe01134/djangobluemix
  • 我的意思是南方的 makemigrations、migrate 等。你链接到的示例应用程序只是做一个同步数据库,我在那里创建了一个问题github.com/fe01134/djangobluemix/issues/1 建议为 Django 1.7+ 添加上述代码我正在使用 Django 1.6
  • 我强烈建议不要在生产环境中创建迁移。您应该在本地开发环境中创建它们,并在将它们与代码库中的相应更改一起提交之前对其进行测试。
  • 迁移被写入<app>/migrations/文件夹中的python文件中。您应该将这些文件提交到您的存储库并将它们推送到 Bluemix(或以其他方式复制它们)。所以manage.py schemamigration 应该只在开发中运行并提交/推送,然后manage.py migrate 可以在您部署项目的任何地方安全运行。

标签: django database-migration django-south cloud-foundry ibm-cloud


【解决方案1】:

我强烈建议不要在生产环境中创建迁移。您应该在本地开发环境中创建它们,并在将它们与代码库中的相应更改一起提交之前对其进行测试。

迁移是在 /migrations/ 文件夹中的 python 文件中编写的。您应该将这些文件提交到您的存储库并将它们推送到 Bluemix(或以其他方式复制它们)。所以 manage.py schemamigration 应该只在开发和提交/推送中运行,然后 manage.py migrate 可以安全地在您部署项目的任何地方运行。

【讨论】:

  • 你可以这样使用@knbk 的评论吗?据我了解,这是正确的答案。只是不确定接受您的回答的协议是什么,这基本上只是其他人的评论。
猜你喜欢
  • 1970-01-01
  • 2016-05-06
  • 1970-01-01
  • 1970-01-01
  • 2011-08-14
  • 2016-10-23
  • 2013-12-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多