我创建了一个应用程序并将其上传到服务器以测试Capistrano。
在我的本地计算机上,我继续开发应用程序并为我的项目创建了一个数据库,但我不小心删除了我之前尚未运行的生产服务器的一些迁移。
我认为解决方案是:
完全删除生产数据库中的所有表格然后... 运行rake db:schema:dump
然后创建一个迁移文件(删除其余的)并将当前模式(从我的模式转储)粘贴到该迁移中。然后在生产服务器上运行该迁移。
但我想知道这是否有任何不利之处?如果有更好的方式......
使用Ubuntu 12 Server,Rails 4,Ruby 2.0.0
答案 0 :(得分:0)
您无需在prod中删除所有表格。而是创建您描述的大型迁移文件,然后在prod中手动将其记录为应用。
毕竟,迁移的目的是将更改应用于数据库。在您的情况下,只需要在生产环境之外。
手动记录迁移就像将迁移时间戳插入schema_migrations
表一样简单:
mysql> select * from schema_migrations;
+----------------+
| version |
+----------------+
| 20120504193548 |
| 20120508160150 |
| 20120518135330 |
| 20120523163509 |
...
因此,只需执行相应的INSERT
,rails将忽略迁移。
PS - 将来使用源代码管理,只需从以前的版本中恢复文件即可!