Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql capistrano 3.1部署并添加了新的迁移_Mysql_Ruby On Rails_Capistrano3 - Fatal编程技术网

Mysql capistrano 3.1部署并添加了新的迁移

Mysql capistrano 3.1部署并添加了新的迁移,mysql,ruby-on-rails,capistrano3,Mysql,Ruby On Rails,Capistrano3,Ubuntu、rails 4.1、capistrano 3.1 我使用Capistrano将我的rails应用程序部署到服务器上,在这个过程中,执行了db:migration并建立了数据库 然而,后来我创建了新的迁移,当我使用“cap production deploy”时,它显示我的原始db遗漏了一些表(db:migration not executed on my new migrations);当我使用“cap production deploy:migrate”时,capistrano将

Ubuntu、rails 4.1、capistrano 3.1

我使用Capistrano将我的rails应用程序部署到服务器上,在这个过程中,执行了db:migration并建立了数据库

然而,后来我创建了新的迁移,当我使用“cap production deploy”时,它显示我的原始db遗漏了一些表(db:migration not executed on my new migrations);当我使用“cap production deploy:migrate”时,capistrano将运行所有迁移(包括以前已经执行过的迁移),因此它报告一些已经存在的表(当然它们以前存在)

我的问题是,如何在这些新创建的迁移上执行db:migrate


谢谢

我想我知道答案:

卡皮斯特拉诺没什么问题

在部署过程中,它将按以下顺序执行操作:

1. udpate code
2. rake assets:precompile
3. rake db:migrate
第2步将以某种方式加载应用程序,该应用程序将执行所有初始化程序代码。但这里我访问了新的db表,它应该在#3中创建。所以这会导致表丢失错误

只是想知道为什么在资产期间加载应用程序:预编译,它有什么用?
我们可以不这样做吗?

1。您的
schema.rb
是否包含在您的git回购中?2.当您提到
capistrano
正在运行
rake db:migrate
-这是通过使用ssh的服务器实现的吗?如果是这样,您是否设置了正确的shell变量来定义环境(
RAILS\u ENV=production
)?1。对2.是的,它通过SSH运行生产部署,并尝试访问生产数据库。