我创建了一个应用程序,并将其上传到服务器以测试Capistrano。
在我的本地机器上,我继续开发这个应用程序,并为我的项目创建了一个数据库,但我意外地删除了生产服务器尚未运行的一些早期迁移。
我认为解决办法是:
完全删除了我的产品数据库中的所有表.运行rake :schema:dump
然后创建一个迁移文件(删除rest)并将当前模式(从我的模式转储)粘贴到该迁移中。然后在生产服务器上运行这一迁移。
但我想知道这有什么坏处吗?如果有更好的方法..。
使用Ubuntu12Server、Rails 4、Ruby2.0.0
发布于 2013-08-21 02:44:23
你不需要把你所有的桌子都扔进厕所里。相反,创建您描述的大迁移文件,然后手动记录它在prod中的应用。
毕竟,迁移的目的是将更改应用于DB。在您的情况下,它只需要在您的生产环境之外。
手动记录迁移就像将迁移时间戳插入schema_migrations表一样简单:
mysql> select * from schema_migrations;
+----------------+
| version |
+----------------+
| 20120504193548 |
| 20120508160150 |
| 20120518135330 |
| 20120523163509 |
...因此,只要执行适当的INSERT,rails就会忽略迁移。
PS -在将来,使用源代码管理,这样您就可以简单地从以前的版本恢复文件!
https://stackoverflow.com/questions/18347906
复制相似问题