在Rails中运行一次大规模迁移。通过错误删除迁移文件

时间:2013-08-21 02:28:10

标签: ruby-on-rails schema production

我创建了一个应用程序并将其上传到服务器以测试Capistrano。

在我的本地计算机上,我继续开发应用程序并为我的项目创建了一个数据库,但我不小心删除了我之前尚未运行的生产服务器的一些迁移。

我认为解决方案是:

完全删除生产数据库中的所有表格然后... 运行rake db:schema:dump

然后创建一个迁移文件(删除其余的)并将当前模式(从我的模式转储)粘贴到该迁移中。然后在生产服务器上运行该迁移。

但我想知道这是否有任何不利之处?如果有更好的方式......

使用Ubuntu 12 Server,Rails 4,Ruby 2.0.0

1 个答案:

答案 0 :(得分:0)

您无需在prod中删除所有表格。而是创建您描述的大型迁移文件,然后在prod中手动将其记录为应用

毕竟,迁移的目的是将更改应用于数据库。在您的情况下,只需要在生产环境之外。

手动记录迁移就像将迁移时间戳插入schema_migrations表一样简单:

mysql> select * from schema_migrations;
+----------------+
| version        |
+----------------+
| 20120504193548 |
| 20120508160150 |
| 20120518135330 |
| 20120523163509 |
...

因此,只需执行相应的INSERT,rails将忽略迁移。

PS - 将来使用源代码管理,只需从以前的版本中恢复文件即可!