2011-08-14 98 views
0

为什么在安装适配器时这个方法(list_id)是未定义的?缺少方法MySQL2

== XXXXX: migrating ======================================== 
    -- create_table(:XXXX) 
    -- list_id() 
    rake aborted! 
    An error has occurred, all later migrations canceled: 

    undefined method `list_id' for #<ActiveRecord::ConnectionAdapters::Mysql2Adapter:0x007f8345fc0f10> 
    /Users/dcarpenter/Dropbox/workspace/gems/activerecord-3.0.9/lib/active_record/migration.rb:385:in `block in method_missing' 

下面是完整的LOAD:

 undefined method `list_id' for #<ActiveRecord::ConnectionAdapters::Mysql2Adapter:0x007f9a3d416340> 
/Users/dcarpenter/Dropbox/workspace/gems/activerecord-3.0.9/lib/active_record/migration.rb:385:in `block in method_missing' 
/Users/dcarpenter/Dropbox/workspace/gems/activerecord-3.0.9/lib/active_record/migration.rb:361:in `block in say_with_time' 
/Users/dcarpenter/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/1.9.1/benchmark.rb:295:in `measure' 
/Users/dcarpenter/Dropbox/workspace/gems/activerecord-3.0.9/lib/active_record/migration.rb:361:in `say_with_time' 
/Users/dcarpenter/Dropbox/workspace/gems/activerecord-3.0.9/lib/active_record/migration.rb:381:in `method_missing' 
/Users/dcarpenter/Dropbox/workspace/BlueFusion/db/migrate/20110812030512_create_outreach_campaigns.rb:4:in `block in up' 
/Users/dcarpenter/Dropbox/workspace/gems/activerecord-3.0.9/lib/active_record/connection_adapters/abstract/schema_statements.rb:157:in `create_table' 
/Users/dcarpenter/Dropbox/workspace/gems/mysql2-0.2.11/lib/active_record/connection_adapters/mysql2_adapter.rb:421:in `create_table' 
/Users/dcarpenter/Dropbox/workspace/gems/activerecord-3.0.9/lib/active_record/migration.rb:385:in `block in method_missing' 
/Users/dcarpenter/Dropbox/workspace/gems/activerecord-3.0.9/lib/active_record/migration.rb:361:in `block in say_with_time' 
/Users/dcarpenter/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/1.9.1/benchmark.rb:295:in `measure' 
/Users/dcarpenter/Dropbox/workspace/gems/activerecord-3.0.9/lib/active_record/migration.rb:361:in `say_with_time' 
/Users/dcarpenter/Dropbox/workspace/gems/activerecord-3.0.9/lib/active_record/migration.rb:381:in `method_missing' 
/Users/dcarpenter/Dropbox/workspace/BlueFusion/db/migrate/20110812030512_create_outreach_campaigns.rb:3:in `up' 
/Users/dcarpenter/Dropbox/workspace/gems/activerecord-3.0.9/lib/active_record/migration.rb:314:in `block in migrate' 
/Users/dcarpenter/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/1.9.1/benchmark.rb:295:in `measure' 
/Users/dcarpenter/Dropbox/workspace/gems/activerecord-3.0.9/lib/active_record/migration.rb:314:in `migrate' 
/Users/dcarpenter/Dropbox/workspace/gems/activerecord-3.0.9/lib/active_record/migration.rb:397:in `migrate' 
/Users/dcarpenter/Dropbox/workspace/gems/activerecord-3.0.9/lib/active_record/migration.rb:539:in `block (2 levels) in migrate' 
/Users/dcarpenter/Dropbox/workspace/gems/activerecord-3.0.9/lib/active_record/migration.rb:615:in `call' 
/Users/dcarpenter/Dropbox/workspace/gems/activerecord-3.0.9/lib/active_record/migration.rb:615:in `ddl_transaction' 
/Users/dcarpenter/Dropbox/workspace/gems/activerecord-3.0.9/lib/active_record/migration.rb:538:in `block in migrate' 
/Users/dcarpenter/Dropbox/workspace/gems/activerecord-3.0.9/lib/active_record/migration.rb:525:in `each' 
/Users/dcarpenter/Dropbox/workspace/gems/activerecord-3.0.9/lib/active_record/migration.rb:525:in `migrate' 
/Users/dcarpenter/Dropbox/workspace/gems/activerecord-3.0.9/lib/active_record/migration.rb:435:in `up' 
/Users/dcarpenter/Dropbox/workspace/gems/activerecord-3.0.9/lib/active_record/migration.rb:417:in `migrate' 
/Users/dcarpenter/Dropbox/workspace/gems/activerecord-3.0.9/lib/active_record/railties/databases.rake:142:in `block (2 levels) in <top (required)>' 
/Users/dcarpenter/Dropbox/workspace/gems/rake-0.9.2/lib/rake/task.rb:205:in `call' 
/Users/dcarpenter/Dropbox/workspace/gems/rake-0.9.2/lib/rake/task.rb:205:in `block in execute' 
/Users/dcarpenter/Dropbox/workspace/gems/rake-0.9.2/lib/rake/task.rb:200:in `each' 
/Users/dcarpenter/Dropbox/workspace/gems/rake-0.9.2/lib/rake/task.rb:200:in `execute' 
/Users/dcarpenter/Dropbox/workspace/gems/rake-0.9.2/lib/rake/task.rb:158:in `block in invoke_with_call_chain' 
/Users/dcarpenter/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/1.9.1/monitor.rb:201:in `mon_synchronize' 
/Users/dcarpenter/Dropbox/workspace/gems/rake-0.9.2/lib/rake/task.rb:151:in `invoke_with_call_chain' 
/Users/dcarpenter/Dropbox/workspace/gems/rake-0.9.2/lib/rake/task.rb:144:in `invoke' 
/Users/dcarpenter/Dropbox/workspace/gems/rake-0.9.2/lib/rake/application.rb:112:in `invoke_task' 
/Users/dcarpenter/Dropbox/workspace/gems/rake-0.9.2/lib/rake/application.rb:90:in `block (2 levels) in top_level' 
/Users/dcarpenter/Dropbox/workspace/gems/rake-0.9.2/lib/rake/application.rb:90:in `each' 
/Users/dcarpenter/Dropbox/workspace/gems/rake-0.9.2/lib/rake/application.rb:90:in `block in top_level' 
/Users/dcarpenter/Dropbox/workspace/gems/rake-0.9.2/lib/rake/application.rb:129:in `standard_exception_handling' 
/Users/dcarpenter/Dropbox/workspace/gems/rake-0.9.2/lib/rake/application.rb:84:in `top_level' 
/Users/dcarpenter/Dropbox/workspace/gems/rake-0.9.2/lib/rake/application.rb:62:in `block in run' 
/Users/dcarpenter/Dropbox/workspace/gems/rake-0.9.2/lib/rake/application.rb:129:in `standard_exception_handling' 
/Users/dcarpenter/Dropbox/workspace/gems/rake-0.9.2/lib/rake/application.rb:59:in `run' 
/Users/dcarpenter/Dropbox/workspace/gems/rake-0.9.2/bin/rake:32:in `<top (required)>' 
/Users/dcarpenter/.rvm/rubies/ruby-1.9.2-p290/bin/rake:19:in `load' 
/Users/dcarpenter/.rvm/rubies/ruby-1.9.2-p290/bin/rake:19:in `<main>' 



class CreateOutreachCampaigns < ActiveRecord::Migration 
    def self.up 
    create_table :outreach_campaigns do |t| 
     t.integer list_id 
     t.integer parent_list_id 
     t.integer survey_id 
     t.integer user_id 
     t.string short_desc 
     t.string long_desc 
     t.enum type, :limit => [:call,:walk] 
     t.timestamps 
    end 
    add_index "outreach_campaigns", ["list_id"] 
    add_index "outreach_campaigns", ["survey_id"] 
    add_index "outreach_campaigns", ["parent_list_id"] 
    add_index "outreach_campaigns", ["user_id"] 
    end 

    def self.down 
    drop_table :outreach_campaigns 
    end 
end 
+0

该帖子的第一部分是来自跟踪的片段 – Drew

+0

我已经添加了完整的跟踪。 – Drew

+0

如果您提供失败的迁移源,那将更容易。无论如何,该错误位于文件/Users/dcarpenter/Dropbox/workspace/BlueFusion/db/migrate/20110812030512_create_outreach_campaigns.rb –

回答

2

应该t.integer :list_id上线4线的其余的同样的错误。

另请注意,enum-column需要一个plugin,而名为“type”的列是一个坏主意,因为type是一个保留字,您可以绕过它,但最好将列重命名为其他名称。

+0

有没有这种语法可以编译的情况?即现有的语法? – Drew

+0

谢谢。我刚刚抛出一个新的错误 - create_table(:outreach_campaigns) - type() rake中止! – Drew

+0

理论上是的。如果list_id是一个局部变量或函数返回一个字符串。如'list_id =“list_id”; t.integer list_id' –