【发布时间】:2014-05-10 07:11:50
【问题描述】:
Ubuntu,rails 4.1,capistrano 3.1
我使用 Capistrano 将我的 Rails 应用程序部署到服务器,在此过程中,执行了 db:migration 并建立了数据库。
但是,后来我创建了新的迁移,当我使用“cap production deploy”时,它显示我的原始数据库错过了一些表(db:迁移未在我的新迁移上执行);当我使用“cap production deploy:migrate”时,capistrano 将运行所有迁移(包括之前已经执行的迁移),因此它报告某些表已经存在(当然它们之前存在)。
我的问题是,我怎样才能在那些新创建的迁移上执行 db:migrate ?
谢谢
【问题讨论】:
-
1.您的
schema.rb是否包含在您的 git 存储库中? 2. 当您提到capistrano正在运行rake db:migrate- 这是通过使用ssh 的服务器吗?如果是这样,您是否设置了正确的 shell 变量来定义环境(RAILS_ENV=production)? -
1.是的; 2. 是的,通过 SSH,它运行生产部署,并尝试访问生产数据库。
标签: mysql ruby-on-rails capistrano3