2016-02-22 52 views
0

我有一個包含多個表的項目,仍處於開發早期階段。我需要對遷移進行一些更改,並希望回滾才能正確執行此操作。這些都是微小的更改,我寧願直接編輯遷移,而不是創建更改遷移。Rake不會回滾遷移,參數數量錯誤(1代表0)

當我運行rake db:rollback我得到以下異常:

wrong number of arguments (1 for 0)/Users/mmo/.rvm/gems/ruby-2.2.4/gems/activerecord-4.2.5/lib/active_record/migration.rb:492:in `initialize' 

這個數據庫是全新的 - 從來就只是做rake db:drop db:migrate

而且rake db:migrate:status表明這一點:

Status Migration ID Migration Name 
-------------------------------------------------- 
    up  20151229013054 Create courses 
    up  20151229013055 Create races 
    up  20151229013326 Create events 
    up  20151229013400 Create countries 
    up  20151229013424 Create participants 
    up  20151229013616 Create efforts 
    up  20151229013622 Create locations 
    up  20151229013757 Create splits 
    up  20151229013938 Create split times 
    up  20151229014302 Create users 
    up  20160129060100 Create interests 
    up  20160131195951 Create ownerships 

的Gemfile看起來是這樣的:

source 'https://rubygems.org' 
ruby '2.2.4' 
gem 'rails', '4.2.5' 
gem 'sqlite3' 
gem 'responders', '~> 2.0' 
gem 'mysql2', '~> 0.3.18' 
gem 'sass-rails', '~> 5.0.4' 
gem 'uglifier', '>= 1.3.0' 
gem 'coffee-rails', '~> 4.1.0' 
gem 'jquery-rails' 
gem 'jbuilder', '~> 2.0' 
gem 'kaminari' 
gem 'turbolinks' 
group :development, :test do 
    gem 'byebug' 
end 
group :development do 
    gem 'web-console', '~> 2.0' 
    gem 'spring' 
end 
gem 'bootstrap-sass' 
gem 'high_voltage' 
gem 'omniauth' 
gem 'omniauth-facebook' 
gem 'devise' 
gem 'pundit' 
gem 'rails_apps_pages' 
gem 'therubyracer', :platform=>:ruby 
gem 'ar-audit-tracer' 
gem 'oj' 
gem 'alchemist' 
group :development do 
    gem 'better_errors' 
    gem 'foreman' 
    gem 'rails_layout' 
end 
group :development, :test do 
    gem 'pry-rails' 
    gem 'pry-rescue' 
    gem 'rubocop', '~> 0.36' 
    gem 'rspec', '~> 3.4' 
    gem 'rspec-rails', '~> 3.0' 
end 

任何想法,將最讚賞。

編輯:這裏是--trace結果:

$rake db:migrate --trace 
** Invoke db:_dump (first_time) 
** Execute db:_dump 
** Invoke db:schema:dump (first_time) 
** Invoke environment 
** Invoke db:load_config 
** Execute db:schema:dump 

$rake db:rollback --trace 
** Invoke db:rollback (first_time) 
** Invoke environment (first_time) 
** Execute environment 
** Invoke db:load_config (first_time) 
** Execute db:load_config 
** Execute db:rollback 

最後一件事:我想rake db:drop db:create,然後剛跑第一遷移(rake db:migrate VERSION=20151229013054)。即使那樣我也無法回滾那一次遷移。我犯了同樣的錯誤。

+0

這可能有幫助 - http://stackoverflow.com/questions/27139007/cant-migrate-database-after-scaffold-section-2-2-ruby-on-rails-tutorial-michae –

+0

嘗試檢查跟蹤錯誤'rake db:migrate --trace' – usmanali

+0

@usmanali,添加了追蹤結果。 – moveson

回答

0

我使用我的自動記錄用戶的衝壓「AR-審計示蹤劑」寶石。原來,這個gem創建了rake db:rollback的問題。當我註釋出寶石時,我可以很好地回滾。不知道這是一個普遍問題還是隻針對我的情況。

0

您已刪除數據庫並將其遷移。你應該再次創建一個。

rake db:drop 

rake db:create db:migrate 

Please go through this answer

行號492 migration.rb,

<tt>ActiveRecord::Migration::CommandRecorder</tt>. 

所以你SHLD再次創建數據庫。

+0

你好@moveson,現在解決了嗎? – Sravan

+0

我試過了rake db:drop然後rake db:create和rake db:migrate。這樣做後,我仍然無法回滾遷移。 – moveson

+0

一旦運行這個命令'rake db:rollback:status'並查看回滾中實際發生的情況。 – Sravan

0

給他們一個嘗試 串行明智:

rake db:drop :- drops the database for the current env 
rake db:create :- creates the database for the current env 
rake db:setup :- runs db:schema:load, db:seed 
+0

我試過這個,但試圖回滾時得到了同樣的錯誤。 – moveson

相關問題