Skip to content

Cannot run rake db:rollback when reversable add_column has several options #359

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
mwlang opened this issue Oct 23, 2014 · 8 comments
Closed
Labels

Comments

@mwlang
Copy link

mwlang commented Oct 23, 2014

Cannot run rake db:rollback when reversable add_column has several options as follows:

class AddBillToInfoToInvoiceHeader < ActiveRecord::Migration
  def change
    add_column :invoice_header, :bill_to_name, :string, limit: 50
  end
end

rake db:migrate && rake db:rollback:

== 20141023161056 AddBillToInfoToInvoiceHeader: reverting =====================
-- remove_column(:invoice_header, :bill_to_name, :string, {:limit=>50})
rake aborted!
StandardError: An error has occurred, this and all later migrations canceled:

wrong number of arguments (4 for 2..3)/Users/mwlang/.rvm/gems/ruby-2.1.2/gems/activerecord-sqlserver-adapter-4.1.0/lib/active_record/connection_adapters/sqlserver/schema_statements.rb:66:in `remove_column'
/Users/mwlang/.rvm/gems/ruby-2.1.2/gems/activerecord-4.1.5/lib/active_record/migration.rb:649:in `block in method_missing'
/Users/mwlang/.rvm/gems/ruby-2.1.2/gems/activerecord-4.1.5/lib/active_record/migration.rb:621:in `block in say_with_time'
/Users/mwlang/.rvm/gems/ruby-2.1.2/gems/activerecord-4.1.5/lib/active_record/migration.rb:621:in `say_with_time'
/Users/mwlang/.rvm/gems/ruby-2.1.2/gems/activerecord-4.1.5/lib/active_record/migration.rb:641:in `method_missing'
/Users/mwlang/.rvm/gems/ruby-2.1.2/gems/activerecord-4.1.5/lib/active_record/migration.rb:486:in `block in revert'
/Users/mwlang/.rvm/gems/ruby-2.1.2/gems/activerecord-4.1.5/lib/active_record/migration.rb:485:in `each'
/Users/mwlang/.rvm/gems/ruby-2.1.2/gems/activerecord-4.1.5/lib/active_record/migration.rb:485:in `revert'
/Users/mwlang/.rvm/gems/ruby-2.1.2/gems/activerecord-4.1.5/lib/active_record/migration.rb:593:in `exec_migration'
/Users/mwlang/.rvm/gems/ruby-2.1.2/gems/activerecord-4.1.5/lib/active_record/migration.rb:579:in `block (2 levels) in migrate'
/Users/mwlang/.rvm/gems/ruby-2.1.2/gems/activerecord-4.1.5/lib/active_record/migration.rb:578:in `block in migrate'
/Users/mwlang/.rvm/gems/ruby-2.1.2/gems/activerecord-4.1.5/lib/active_record/connection_adapters/abstract/connection_pool.rb:294:in `with_connection'
/Users/mwlang/.rvm/gems/ruby-2.1.2/gems/activerecord-4.1.5/lib/active_record/migration.rb:577:in `migrate'
/Users/mwlang/.rvm/gems/ruby-2.1.2/gems/activerecord-4.1.5/lib/active_record/migration.rb:752:in `migrate'
/Users/mwlang/.rvm/gems/ruby-2.1.2/gems/activerecord-4.1.5/lib/active_record/migration.rb:992:in `block in execute_migration_in_transaction'
/Users/mwlang/.rvm/gems/ruby-2.1.2/gems/activerecord-4.1.5/lib/active_record/migration.rb:1038:in `block in ddl_transaction'
/Users/mwlang/.rvm/gems/ruby-2.1.2/gems/activerecord-4.1.5/lib/active_record/connection_adapters/abstract/database_statements.rb:201:in `block in transaction'
/Users/mwlang/.rvm/gems/ruby-2.1.2/gems/activerecord-4.1.5/lib/active_record/connection_adapters/abstract/database_statements.rb:209:in `within_new_transaction'
/Users/mwlang/.rvm/gems/ruby-2.1.2/gems/activerecord-4.1.5/lib/active_record/connection_adapters/abstract/database_statements.rb:201:in `transaction'
/Users/mwlang/.rvm/gems/ruby-2.1.2/gems/activerecord-4.1.5/lib/active_record/transactions.rb:208:in `transaction'
/Users/mwlang/.rvm/gems/ruby-2.1.2/gems/activerecord-4.1.5/lib/active_record/migration.rb:1038:in `ddl_transaction'
/Users/mwlang/.rvm/gems/ruby-2.1.2/gems/activerecord-4.1.5/lib/active_record/migration.rb:991:in `execute_migration_in_transaction'
/Users/mwlang/.rvm/gems/ruby-2.1.2/gems/activerecord-4.1.5/lib/active_record/migration.rb:953:in `block in migrate'
/Users/mwlang/.rvm/gems/ruby-2.1.2/gems/activerecord-4.1.5/lib/active_record/migration.rb:949:in `each'
/Users/mwlang/.rvm/gems/ruby-2.1.2/gems/activerecord-4.1.5/lib/active_record/migration.rb:949:in `migrate'
/Users/mwlang/.rvm/gems/ruby-2.1.2/gems/activerecord-4.1.5/lib/active_record/migration.rb:814:in `down'
/Users/mwlang/.rvm/gems/ruby-2.1.2/gems/activerecord-4.1.5/lib/active_record/migration.rb:904:in `move'
/Users/mwlang/.rvm/gems/ruby-2.1.2/gems/activerecord-4.1.5/lib/active_record/migration.rb:796:in `rollback'
/Users/mwlang/.rvm/gems/ruby-2.1.2/gems/activerecord-4.1.5/lib/active_record/railties/databases.rake:118:in `block (2 levels) in <top (required)>'
/Users/mwlang/.rvm/gems/ruby-2.1.2/bin/ruby_executable_hooks:15:in `eval'
/Users/mwlang/.rvm/gems/ruby-2.1.2/bin/ruby_executable_hooks:15:in `<main>'
ArgumentError: wrong number of arguments (4 for 2..3)
/Users/mwlang/.rvm/gems/ruby-2.1.2/gems/activerecord-sqlserver-adapter-4.1.0/lib/active_record/connection_adapters/sqlserver/schema_statements.rb:66:in `remove_column'
/Users/mwlang/.rvm/gems/ruby-2.1.2/gems/activerecord-4.1.5/lib/active_record/migration.rb:649:in `block in method_missing'
/Users/mwlang/.rvm/gems/ruby-2.1.2/gems/activerecord-4.1.5/lib/active_record/migration.rb:621:in `block in say_with_time'
/Users/mwlang/.rvm/gems/ruby-2.1.2/gems/activerecord-4.1.5/lib/active_record/migration.rb:621:in `say_with_time'
/Users/mwlang/.rvm/gems/ruby-2.1.2/gems/activerecord-4.1.5/lib/active_record/migration.rb:641:in `method_missing'
/Users/mwlang/.rvm/gems/ruby-2.1.2/gems/activerecord-4.1.5/lib/active_record/migration.rb:486:in `block in revert'
/Users/mwlang/.rvm/gems/ruby-2.1.2/gems/activerecord-4.1.5/lib/active_record/migration.rb:485:in `each'
/Users/mwlang/.rvm/gems/ruby-2.1.2/gems/activerecord-4.1.5/lib/active_record/migration.rb:485:in `revert'
/Users/mwlang/.rvm/gems/ruby-2.1.2/gems/activerecord-4.1.5/lib/active_record/migration.rb:593:in `exec_migration'
/Users/mwlang/.rvm/gems/ruby-2.1.2/gems/activerecord-4.1.5/lib/active_record/migration.rb:579:in `block (2 levels) in migrate'
/Users/mwlang/.rvm/gems/ruby-2.1.2/gems/activerecord-4.1.5/lib/active_record/migration.rb:578:in `block in migrate'
/Users/mwlang/.rvm/gems/ruby-2.1.2/gems/activerecord-4.1.5/lib/active_record/connection_adapters/abstract/connection_pool.rb:294:in `with_connection'
/Users/mwlang/.rvm/gems/ruby-2.1.2/gems/activerecord-4.1.5/lib/active_record/migration.rb:577:in `migrate'
/Users/mwlang/.rvm/gems/ruby-2.1.2/gems/activerecord-4.1.5/lib/active_record/migration.rb:752:in `migrate'
/Users/mwlang/.rvm/gems/ruby-2.1.2/gems/activerecord-4.1.5/lib/active_record/migration.rb:992:in `block in execute_migration_in_transaction'
/Users/mwlang/.rvm/gems/ruby-2.1.2/gems/activerecord-4.1.5/lib/active_record/migration.rb:1038:in `block in ddl_transaction'
/Users/mwlang/.rvm/gems/ruby-2.1.2/gems/activerecord-4.1.5/lib/active_record/connection_adapters/abstract/database_statements.rb:201:in `block in transaction'
/Users/mwlang/.rvm/gems/ruby-2.1.2/gems/activerecord-4.1.5/lib/active_record/connection_adapters/abstract/database_statements.rb:209:in `within_new_transaction'
/Users/mwlang/.rvm/gems/ruby-2.1.2/gems/activerecord-4.1.5/lib/active_record/connection_adapters/abstract/database_statements.rb:201:in `transaction'
/Users/mwlang/.rvm/gems/ruby-2.1.2/gems/activerecord-4.1.5/lib/active_record/transactions.rb:208:in `transaction'
/Users/mwlang/.rvm/gems/ruby-2.1.2/gems/activerecord-4.1.5/lib/active_record/migration.rb:1038:in `ddl_transaction'
/Users/mwlang/.rvm/gems/ruby-2.1.2/gems/activerecord-4.1.5/lib/active_record/migration.rb:991:in `execute_migration_in_transaction'
/Users/mwlang/.rvm/gems/ruby-2.1.2/gems/activerecord-4.1.5/lib/active_record/migration.rb:953:in `block in migrate'
/Users/mwlang/.rvm/gems/ruby-2.1.2/gems/activerecord-4.1.5/lib/active_record/migration.rb:949:in `each'
/Users/mwlang/.rvm/gems/ruby-2.1.2/gems/activerecord-4.1.5/lib/active_record/migration.rb:949:in `migrate'
/Users/mwlang/.rvm/gems/ruby-2.1.2/gems/activerecord-4.1.5/lib/active_record/migration.rb:814:in `down'
/Users/mwlang/.rvm/gems/ruby-2.1.2/gems/activerecord-4.1.5/lib/active_record/migration.rb:904:in `move'
/Users/mwlang/.rvm/gems/ruby-2.1.2/gems/activerecord-4.1.5/lib/active_record/migration.rb:796:in `rollback'
/Users/mwlang/.rvm/gems/ruby-2.1.2/gems/activerecord-4.1.5/lib/active_record/railties/databases.rake:118:in `block (2 levels) in <top (required)>'
/Users/mwlang/.rvm/gems/ruby-2.1.2/bin/ruby_executable_hooks:15:in `eval'
/Users/mwlang/.rvm/gems/ruby-2.1.2/bin/ruby_executable_hooks:15:in `<main>'
Tasks: TOP => db:rollback
(See full trace by running task with --trace)
@metaskills
Copy link
Member

Is this still the case for the 4.2 adapter?

@mwlang
Copy link
Author

mwlang commented Jan 29, 2015

I don't know. I can't use the 4.2 adapter since all my clients are still SQL Server 2005 (yeah, they should upgrade!)

@metaskills
Copy link
Member

Sorry to hear that, I would be more than happy to take a pull request to our 4-1-stable branch, I just do not have time to work on the older versions.

@hail2skins
Copy link

I have this error for the 4.2 adapter myself.

@kevinsheffield
Copy link

This is an issue even when running against master.

https://gist.github.com/kevinsheffield/ae8223671dc0c53b272d

I did notice the method signatures for remove_column are different from the abstract_adapter vs this one...

Abstract : def remove_column(table_name, column_name, type = nil, options = {})
This : def remove_column(table_name, column_name, _type = nil)

@metaskills
Copy link
Member

Thanks @kevinsheffield I have made that arity change to master. Can someone confirm this addresses the issue?

@kevinsheffield
Copy link

Thanks @metaskills, sorry went on a vacation but this fix does address the issue.

Thanks again!

metaskills added a commit that referenced this issue Nov 8, 2015
@metaskills
Copy link
Member

Made this change in 4-1-stable branch. Will have a release out shortly.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

4 participants