0

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

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

我认为解决方案是:

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

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

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

使用 Ubuntu 12 服务器、Rails 4、Ruby 2.0.0

4

1 回答 1

0

您无需将所有表都放入 prod。相反,创建您描述的大迁移文件,然后手动将其记录为在 prod.xml 中应用。

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

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

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

因此,只需执行适当的操作INSERT,rails 就会忽略迁移。

PS - 将来,请使用源代码管理,这样您就可以简单地从以前的版本中恢复文件!

于 2013-08-21T02:44:23.587 回答