mysql - Capistrano 部署到数据库

标签 mysql ruby-on-rails-3 deployment migration capistrano

幸运的是,我终于成功地设置了自动部署的服务器。

现在我部署时出现了一个小问题...

当部署发生时,数据库会被迁移,即使在服务器重新启动后,数据库也会保持某种“缓存”状态,并且在我转到服务器之前无法识别迁移所做的任何更改并重新启动mysql服务。

关于如何解决这个问题有什么想法吗?

提前致谢。

编辑1:

这是一个迁移示例;

class AddRoleToUsers < ActiveRecord::Migration
  def change
    add_column :users, :role, :string, default: 'member'
  end
end

最佳答案

但是你怎么知道这些变化没有被识别呢?你能发布一些例子吗?
在生产环境中,Rails 能够缓存一些数据库回复,但重新启动 Rails 服务器应该会清除所有这些缓存。所以看来问题出在mysql部分的某个地方(我个人只使用Postgres所以对mysql不太了解)。也许解决方案是在 Capistrano 任务中添加一些 mysql 重启命令?
在 Capistrano 3.1 中,它会类似于(假设您正在运行 Linux 服务器):

task :restart do
    on roles(:app), in: :sequence, wait: 5 do
       execute :touch, release_path.join('tmp/restart.txt')
       execute "sudo /etc/init.d/mysql restart"
    end
  end

关于mysql - Capistrano 部署到数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22861294/

相关文章:

php - MySql/PHP 插入 SET Last_Insert_ID()

ruby-on-rails - 如何将域添加到 heroku 中的 Rails 应用程序

ruby-on-rails - Rails 3 中的安全子域

ssl - Azure App Service 证书 (dev) 问题上的身份服务器 4 部署

deployment - 在 Heroku 上暂存实例

java - 仅包含选定子级的 JPA 查询父级

mysql - 'result1' 中的未知列 'field list'

java - 无法通过 JWS 应用程序连接到 MySQL 数据库

ruby-on-rails-3 - Carrierwave:如何裁剪和调整大小以使最终图片具有完全相同的宽度和高度?

c# - 使用自定义表单设置项目