2012-03-15 48 views
4

我工作的Python/Django和我试图用南来管理我的数据库。在当地环境中工作很好。当我部署到Heroku时出现问题。问题是,当我创建如何使南工作在Heroku上的Django应用程序

$heroku run manage.py schemamigration mydjangoapp 

迁移它看起来像它的工作原理(外壳证实它),但是,后来我尝试使用迁移和它不会工作。当我这样做:

$heroku run python manage.py migrate mydjangoapp 

我得到这个;

The app 'createtuto' does not appear to use migrations 

我查了这个问题,它看起来像Heroku的不允许南创建于/ myDjangoapp /迁移迁移目录。

有什么我可以做的吗?

我试图用convert_to_south,但我得到了相同的结果:在开始的时候,它看起来像它的工作,但它没有,不迁移创建。

+1

为什么要尝试在Heroku上创建迁移? Heroku应该只是您使用原始代码的生产环境。所有这些东西都应该在您当地的开发环境中完成。 – 2012-03-15 16:35:02

+1

@ChrisPratt你在说什么?您如何期望您的生产应用程序随着时间的推移而发展? – HorseloverFat 2014-07-02 10:38:36

+0

@HorseloverFat:您从不运行针对生产的迁移。您在本地迁移模式。测试更改。然后生成或编写SQL,以便在生产中进行这些更改,最好在DBA的协助下(如果您的组织有)。如果你自己在做所有事情,那么应用SQL更好,而不是盲目迁移,因为那样你可以在做出这些更改之前仔细检查将要应用于数据库的确切更改。 – 2014-07-02 15:15:39

回答

10

当你运行“的Heroku运行”它连接到您的部署环境的孤立事件。它确实创建了迁移,但迁移并不包含在你的slu within中。每次你做'git push heroku master'时,它会安装你的依赖关系,并将你的应用程序打包成一个slug。这或多或少是您的应用程序的一个压缩包,它使Heroku在扩展时可以轻松地将其部署到新的dynos中。

为了运行在Heroku上迁移,你会在本地创建的迁移,在检查它,然后在Heroku上运行迁移。类似的东西来:

manage.py schemamigration mydjangoapp 
git add mydjangoapp/migrations/* 
git commit -m 'adding new migrations' 
git push heroku master 
heroku run python manage.py migrate mydjangoapp 
+0

Nop它没有工作。当我尝试你的建议我得到这个: – 2012-04-25 02:11:33

+0

!在实际迁移过程中发现错误!中止。 -------------- !由于您的数据库不支持运行 !交易中的模式变更声明,我们有 !使其处于移民之间的临时状态。 ------------------------- – 2012-04-25 02:11:51

+0

现在我唯一的选择是备份数据库并执行“manage.py reset myapp”然后再次“syncdb”并从备份恢复。 – 2012-04-25 02:13:40

5

我跟随迈克球的方向在这里成功: http://www.mikeball.us/blog/using-south-on-heroku/

像CraigKerstiens回答说,你应该让迁移本地第一再推的Heroku。在Heroku上进行迁移之前,请确保将Heroku实例转换为南,例如

heroku run bin/python django_project/manage.py convert_to_south django_app 
+1

该链接改为:http://www.mikeball.us/blog/using-south-on-heroku/ – Medeiros 2014-01-27 19:00:08

+0

我只是补充一点(因为没有办法评论你链接到的博客),我必须首先在本地和Heroku上进行虚假迁移。 – LaundroMat 2014-04-11 13:11:16

相关问题