【发布时间】:2014-07-10 19:01:02
【问题描述】:
我使用 capistrano 3.1 部署到 prod 服务器。
以前,它工作正常。但是今天,当我更改一个 rb 文件(没有添加和更改数据库迁移)时,在部署过程中,当它运行到
Running /usr/local/rvm/bin/rvm default do bundle exec rake db:migrate on xxx
显示错误:
[cc1734f0] Migrating to CreateDevices (20140416233606)
DEBUG [cc1734f0] == 20140416233606 CreateDevices: migrating ====================================
DEBUG [cc1734f0]
DEBUG [cc1734f0] -- create_table(:devices)
DEBUG [cc1734f0]
DEBUG [cc1734f0] Mysql2::Error: Table 'devices' already exists: CREATE TABLE `devices` (`id` int(11) auto_increment PRIMARY KEY, `soh_id` varchar(255), `token_id` varchar(255), `device_hw` varchar(255), `device_sw` varchar(255), `device_name` varchar(255), `created_at` datetime, `updated_at` datetime) ENGINE=InnoDB
DEBUG [cc1734f0] rake aborted!
但在我的 schema.rb 中,我有:
ActiveRecord::Schema.define(version: 20140513035458) do
因为我上次的部署已经创建了表,所以现在报错了。
那么为什么 rake db:migrate 运行之前又执行过的迁移!
我不能删除表格,因为它已经包含数据了。
【问题讨论】:
标签: ruby-on-rails rake capistrano migrate