2013-10-14 21 views
0

將我的Rails應用程序從3.2.13升級到4.0.0後,遷移命令失敗,說「版本由Active Record定義」。ActiveRecord遷移失敗,「版本由Active Record定義」

當我查看MySQL數據庫時,有schema_migrations表和名爲「版本」的列,這似乎與ActiveRecord方法衝突。

有人有任何想法解決這個問題?

我的Gemfile的部分

  • 的ActionMailer(4.0.0)
  • ActionPack的(4.0.0)
  • ActionPack的-action_caching(1.0.0)
  • ActionPack的-page_caching(1.0.0 )
  • activemodel的(4.0.0)
  • 了activerecord(4.0.0)
  • 了activerecord棄用_finders(1.0.3)
  • 的ActiveSupport(4.0.0)
  • mysql2(0.3.13)

錯誤

在不具有任何表乾淨數據庫測試,但增量遷移也失敗了。

命中後,我看到了表「schema_migrations」生成的列「version」沒有記錄,但是:users表被創建。因此,schema_migrations.version正在設置用戶的遷移版本。

$ RAILS_ENV=test rake db:migrate --trace 
** Invoke db:migrate (first_time) 
** Invoke environment (first_time) 
** Execute environment 
** Invoke db:load_config (first_time) 
** Execute db:load_config 
** Execute db:migrate 
== DeviseCreateUsers: migrating ============================================== 
-- create_table(:users) 
    -> 0.0289s 
== DeviseCreateUsers: migrated (0.0290s) ===================================== 

rake aborted! 
An error has occurred, all later migrations canceled: 

version is defined by Active Record/Users/devuser/.rvm/gems/ruby-1.9.3-p362/gems/activerecord-4.0.0/lib/active_record/attribute_methods.rb:59:in `instance_method_already_implemented?' 
/Users/devuser/.rvm/gems/ruby-1.9.3-p362/gems/activemodel-4.0.0/lib/active_model/attribute_methods.rb:282:in `block in define_attribute_method' 
/Users/devuser/.rvm/gems/ruby-1.9.3-p362/gems/activemodel-4.0.0/lib/active_model/attribute_methods.rb:279:in `each' 
/Users/devuser/.rvm/gems/ruby-1.9.3-p362/gems/activemodel-4.0.0/lib/active_model/attribute_methods.rb:279:in `define_attribute_method' 
/Users/devuser/.rvm/gems/ruby-1.9.3-p362/gems/activemodel-4.0.0/lib/active_model/attribute_methods.rb:246:in `block in define_attribute_methods' 
/Users/devuser/.rvm/gems/ruby-1.9.3-p362/gems/activemodel-4.0.0/lib/active_model/attribute_methods.rb:246:in `each' 
/Users/devuser/.rvm/gems/ruby-1.9.3-p362/gems/activemodel-4.0.0/lib/active_model/attribute_methods.rb:246:in `define_attribute_methods' 
/Users/devuser/.rvm/gems/ruby-1.9.3-p362/gems/activerecord-4.0.0/lib/active_record/attribute_methods.rb:29:in `block in define_attribute_methods' 
<internal:prelude>:10:in `synchronize' 
/Users/devuser/.rvm/gems/ruby-1.9.3-p362/gems/activerecord-4.0.0/lib/active_record/attribute_methods.rb:26:in `define_attribute_methods' 
/Users/devuser/.rvm/gems/ruby-1.9.3-p362/gems/activerecord-4.0.0/lib/active_record/attribute_methods.rb:167:in `respond_to?' 
/Users/devuser/.rvm/gems/ruby-1.9.3-p362/gems/activesupport-4.0.0/lib/active_support/callbacks.rb:368:in `__define_callbacks' 
/Users/devuser/.rvm/gems/ruby-1.9.3-p362/gems/activesupport-4.0.0/lib/active_support/callbacks.rb:79:in `run_callbacks' 
/Users/devuser/.rvm/gems/ruby-1.9.3-p362/gems/activemodel-4.0.0/lib/active_model/validations/callbacks.rb:106:in `run_validations!' 
/Users/devuser/.rvm/gems/ruby-1.9.3-p362/gems/activemodel-4.0.0/lib/active_model/validations.rb:314:in `valid?' 
/Users/devuser/.rvm/gems/ruby-1.9.3-p362/gems/activerecord-4.0.0/lib/active_record/validations.rb:70:in `valid?' 
/Users/devuser/.rvm/gems/ruby-1.9.3-p362/gems/activerecord-4.0.0/lib/active_record/validations.rb:77:in `perform_validations' 
/Users/devuser/.rvm/gems/ruby-1.9.3-p362/gems/activerecord-4.0.0/lib/active_record/validations.rb:57:in `save!' 
/Users/devuser/.rvm/gems/ruby-1.9.3-p362/gems/activerecord-4.0.0/lib/active_record/attribute_methods/dirty.rb:41:in `save!' 
/Users/devuser/.rvm/gems/ruby-1.9.3-p362/gems/activerecord-4.0.0/lib/active_record/transactions.rb:275:in `block in save!' 
/Users/devuser/.rvm/gems/ruby-1.9.3-p362/gems/activerecord-4.0.0/lib/active_record/transactions.rb:326:in `block in with_transaction_returning_status' 
/Users/devuser/.rvm/gems/ruby-1.9.3-p362/gems/activerecord-4.0.0/lib/active_record/connection_adapters/abstract/database_statements.rb:202:in `block in transaction' 
/Users/devuser/.rvm/gems/ruby-1.9.3-p362/gems/activerecord-4.0.0/lib/active_record/connection_adapters/abstract/database_statements.rb:210:in `within_new_transaction' 
/Users/devuser/.rvm/gems/ruby-1.9.3-p362/gems/activerecord-4.0.0/lib/active_record/connection_adapters/abstract/database_statements.rb:202:in `transaction' 
/Users/devuser/.rvm/gems/ruby-1.9.3-p362/gems/activerecord-4.0.0/lib/active_record/transactions.rb:209:in `transaction' 
/Users/devuser/.rvm/gems/ruby-1.9.3-p362/gems/activerecord-4.0.0/lib/active_record/transactions.rb:323:in `with_transaction_returning_status' 
/Users/devuser/.rvm/gems/ruby-1.9.3-p362/gems/activerecord-4.0.0/lib/active_record/transactions.rb:275:in `save!' 
/Users/devuser/.rvm/gems/ruby-1.9.3-p362/gems/protected_attributes-1.0.3/lib/active_record/mass_assignment_security/validations.rb:17:in `create!' 
/Users/devuser/.rvm/gems/ruby-1.9.3-p362/gems/activerecord-4.0.0/lib/active_record/migration.rb:990:in `record_version_state_after_migrating' 
/Users/devuser/.rvm/gems/ruby-1.9.3-p362/gems/activerecord-4.0.0/lib/active_record/migration.rb:960:in `block in execute_migration_in_transaction' 
/Users/devuser/.rvm/gems/ruby-1.9.3-p362/gems/activerecord-4.0.0/lib/active_record/migration.rb:1007:in `ddl_transaction' 
/Users/devuser/.rvm/gems/ruby-1.9.3-p362/gems/activerecord-4.0.0/lib/active_record/migration.rb:958:in `execute_migration_in_transaction' 
/Users/devuser/.rvm/gems/ruby-1.9.3-p362/gems/activerecord-4.0.0/lib/active_record/migration.rb:920:in `block in migrate' 
/Users/devuser/.rvm/gems/ruby-1.9.3-p362/gems/activerecord-4.0.0/lib/active_record/migration.rb:916:in `each' 
/Users/devuser/.rvm/gems/ruby-1.9.3-p362/gems/activerecord-4.0.0/lib/active_record/migration.rb:916:in `migrate' 
/Users/devuser/.rvm/gems/ruby-1.9.3-p362/gems/activerecord-4.0.0/lib/active_record/migration.rb:764:in `up' 
/Users/devuser/.rvm/gems/ruby-1.9.3-p362/gems/activerecord-4.0.0/lib/active_record/migration.rb:742:in `migrate' 
/Users/devuser/.rvm/gems/ruby-1.9.3-p362/gems/activerecord-4.0.0/lib/active_record/railties/databases.rake:42:in `block (2 levels) in <top (required)>' 
/Users/devuser/.rvm/gems/ruby-1.9.3-p362/gems/rake-10.1.0/lib/rake/task.rb:236:in `call' 
/Users/devuser/.rvm/gems/ruby-1.9.3-p362/gems/rake-10.1.0/lib/rake/task.rb:236:in `block in execute' 
/Users/devuser/.rvm/gems/ruby-1.9.3-p362/gems/rake-10.1.0/lib/rake/task.rb:231:in `each' 
/Users/devuser/.rvm/gems/ruby-1.9.3-p362/gems/rake-10.1.0/lib/rake/task.rb:231:in `execute' 
/Users/devuser/.rvm/gems/ruby-1.9.3-p362/gems/rake-10.1.0/lib/rake/task.rb:175:in `block in invoke_with_call_chain' 
/Users/devuser/.rvm/rubies/ruby-1.9.3-p362/lib/ruby/1.9.1/monitor.rb:211:in `mon_synchronize' 
/Users/devuser/.rvm/gems/ruby-1.9.3-p362/gems/rake-10.1.0/lib/rake/task.rb:168:in `invoke_with_call_chain' 
/Users/devuser/.rvm/gems/ruby-1.9.3-p362/gems/rake-10.1.0/lib/rake/task.rb:161:in `invoke' 
/Users/devuser/.rvm/gems/ruby-1.9.3-p362/gems/rake-10.1.0/lib/rake/application.rb:149:in `invoke_task' 
/Users/devuser/.rvm/gems/ruby-1.9.3-p362/gems/rake-10.1.0/lib/rake/application.rb:106:in `block (2 levels) in top_level' 
/Users/devuser/.rvm/gems/ruby-1.9.3-p362/gems/rake-10.1.0/lib/rake/application.rb:106:in `each' 
/Users/devuser/.rvm/gems/ruby-1.9.3-p362/gems/rake-10.1.0/lib/rake/application.rb:106:in `block in top_level' 
/Users/devuser/.rvm/gems/ruby-1.9.3-p362/gems/rake-10.1.0/lib/rake/application.rb:115:in `run_with_threads' 
/Users/devuser/.rvm/gems/ruby-1.9.3-p362/gems/rake-10.1.0/lib/rake/application.rb:100:in `top_level' 
/Users/devuser/.rvm/gems/ruby-1.9.3-p362/gems/rake-10.1.0/lib/rake/application.rb:78:in `block in run' 
/Users/devuser/.rvm/gems/ruby-1.9.3-p362/gems/rake-10.1.0/lib/rake/application.rb:165:in `standard_exception_handling' 
/Users/devuser/.rvm/gems/ruby-1.9.3-p362/gems/rake-10.1.0/lib/rake/application.rb:75:in `run' 
/Users/devuser/.rvm/gems/ruby-1.9.3-p362/gems/rake-10.1.0/bin/rake:33:in `<top (required)>' 

也試過耙分貝:設置

$ RAILS_ENV=test rake db:setup 
my_table already exists 
-- create_table("users", {:force=>true}) 
    -> 0.0203s 
-- initialize_schema_migrations_table() 
    -> 0.0007s 
rake aborted! 
version is defined by Active Record 
/Users/devuser/.rvm/gems/ruby-1.9.3-p362/gems/activerecord-4.0.0/lib/active_record/attribute_methods.rb:59:in `instance_method_already_implemented?' 
/Users/devuser/.rvm/gems/ruby-1.9.3-p362/gems/activemodel-4.0.0/lib/active_model/attribute_methods.rb:282:in `block in define_attribute_method' 
/Users/devuser/.rvm/gems/ruby-1.9.3-p362/gems/activemodel-4.0.0/lib/active_model/attribute_methods.rb:279:in `each' 
/Users/devuser/.rvm/gems/ruby-1.9.3-p362/gems/activemodel-4.0.0/lib/active_model/attribute_methods.rb:279:in `define_attribute_method' 
/Users/devuser/.rvm/gems/ruby-1.9.3-p362/gems/activemodel-4.0.0/lib/active_model/attribute_methods.rb:246:in `block in define_attribute_methods' 
/Users/devuser/.rvm/gems/ruby-1.9.3-p362/gems/activemodel-4.0.0/lib/active_model/attribute_methods.rb:246:in `each' 
/Users/devuser/.rvm/gems/ruby-1.9.3-p362/gems/activemodel-4.0.0/lib/active_model/attribute_methods.rb:246:in `define_attribute_methods' 
/Users/devuser/.rvm/gems/ruby-1.9.3-p362/gems/activerecord-4.0.0/lib/active_record/attribute_methods.rb:29:in `block in define_attribute_methods' 
<internal:prelude>:10:in `synchronize' 
/Users/devuser/.rvm/gems/ruby-1.9.3-p362/gems/activerecord-4.0.0/lib/active_record/attribute_methods.rb:26:in `define_attribute_methods' 
/Users/devuser/.rvm/gems/ruby-1.9.3-p362/gems/activerecord-4.0.0/lib/active_record/attribute_methods.rb:167:in `respond_to?' 
/Users/devuser/.rvm/gems/ruby-1.9.3-p362/gems/activesupport-4.0.0/lib/active_support/callbacks.rb:368:in `__define_callbacks' 
/Users/devuser/.rvm/gems/ruby-1.9.3-p362/gems/activesupport-4.0.0/lib/active_support/callbacks.rb:79:in `run_callbacks' 
/Users/devuser/.rvm/gems/ruby-1.9.3-p362/gems/activerecord-4.0.0/lib/active_record/core.rb:216:in `init_with' 
/Users/devuser/.rvm/gems/ruby-1.9.3-p362/gems/activerecord-4.0.0/lib/active_record/persistence.rb:55:in `instantiate' 
/Users/devuser/.rvm/gems/ruby-1.9.3-p362/gems/activerecord-4.0.0/lib/active_record/querying.rb:45:in `block in find_by_sql' 
/Users/devuser/.rvm/gems/ruby-1.9.3-p362/gems/activerecord-4.0.0/lib/active_record/result.rb:21:in `block in each' 
/Users/devuser/.rvm/gems/ruby-1.9.3-p362/gems/activerecord-4.0.0/lib/active_record/result.rb:21:in `each' 
/Users/devuser/.rvm/gems/ruby-1.9.3-p362/gems/activerecord-4.0.0/lib/active_record/result.rb:21:in `each' 
/Users/devuser/.rvm/gems/ruby-1.9.3-p362/gems/activerecord-4.0.0/lib/active_record/querying.rb:45:in `map' 
/Users/devuser/.rvm/gems/ruby-1.9.3-p362/gems/activerecord-4.0.0/lib/active_record/querying.rb:45:in `find_by_sql' 
/Users/devuser/.rvm/gems/ruby-1.9.3-p362/gems/activerecord-4.0.0/lib/active_record/relation.rb:585:in `exec_queries' 
/Users/devuser/.rvm/gems/ruby-1.9.3-p362/gems/activerecord-4.0.0/lib/active_record/relation.rb:471:in `load' 
/Users/devuser/.rvm/gems/ruby-1.9.3-p362/gems/activerecord-4.0.0/lib/active_record/relation.rb:220:in `to_a' 
/Users/devuser/.rvm/gems/ruby-1.9.3-p362/gems/activerecord-4.0.0/lib/active_record/relation/delegation.rb:12:in `map' 
/Users/devuser/.rvm/gems/ruby-1.9.3-p362/gems/activerecord-4.0.0/lib/active_record/migration.rb:787:in `get_all_versions' 
/Users/devuser/.rvm/gems/ruby-1.9.3-p362/gems/activerecord-4.0.0/lib/active_record/migration.rb:949:in `migrated' 
/Users/devuser/.rvm/gems/ruby-1.9.3-p362/gems/activerecord-4.0.0/lib/active_record/migration.rb:944:in `pending_migrations' 
/Users/devuser/.rvm/gems/ruby-1.9.3-p362/gems/activerecord-4.0.0/lib/active_record/railties/databases.rake:164:in `block (2 levels) in <top (required)>' 
/Users/devuser/.rvm/gems/ruby-1.9.3-p362/gems/activerecord-4.0.0/lib/active_record/railties/databases.rake:180:in `block (2 levels) in <top (required)>' 
Tasks: TOP => db:abort_if_pending_migrations 
(See full trace by running task with --trace) 
+0

你可以發佈你的整個的Gemfile,即使在pastie將被罰款 – trh

+0

請檢查:http://pastie.org/8401726 – tomodian

回答

2

問題是與paper_trail,其中有一個名爲版本和休息與軌道4類確保您paper_trail寶石更新到支持的版本

gem 'paper_trail', '>= 3.0.0.beta1' 
+0

如此驚人的問題就消失了。非常感謝! – tomodian