参数Rails项目中的迁移错误

时间:2015-12-02 09:02:19

标签: ruby-on-rails database rake migrate dbmigrate

我使用sqlite作为我的rails应用程序的数据库,然后我用Postgresql更改了它,之后我尝试添加新的迁移时出现错误。

错误

 $ 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
   rake aborted!
   ArgumentError: wrong number of arguments (1 for 4..5)
   /Library/Ruby/Gems/2.0.0/gems/activerecord-4.2.4/lib/active_record/connection_adapters/abstract/schema_definitions.rb:99:in `initialize'
   /Library/Ruby/Gems/2.0.0/gems/spatial_adapter-1.2.0/lib/spatial_adapter/postgresql.rb:71:in `new'
   /Library/Ruby/Gems/2.0.0/gems/spatial_adapter-1.2.0/lib/spatial_adapter/postgresql.rb:71:in `create_table'
   /Library/Ruby/Gems/2.0.0/gems/activerecord-4.2.4/lib/active_record/schema_migration.rb:29:in `create_table'
   /Library/Ruby/Gems/2.0.0/gems/activerecord-4.2.4/lib/active_record/connection_adapters/abstract/schema_statements.rb:822:in `initialize_schema_migrations_table'
   /Library/Ruby/Gems/2.0.0/gems/activerecord-4.2.4/lib/active_record/migration.rb:922:in `initialize'
   /Library/Ruby/Gems/2.0.0/gems/activerecord-4.2.4/lib/active_record/migration.rb:820:in `new'
   /Library/Ruby/Gems/2.0.0/gems/activerecord-4.2.4/lib/active_record/migration.rb:820:in `up'
   /Library/Ruby/Gems/2.0.0/gems/activerecord-4.2.4/lib/active_record/migration.rb:798:in `migrate'
   /Library/Ruby/Gems/2.0.0/gems/activerecord-4.2.4/lib/active_record/tasks/database_tasks.rb:137:in `migrate'
   /Library/Ruby/Gems/2.0.0/gems/activerecord-4.2.4/lib/active_record/railties/databases.rake:44:in `block (2 levels) in <top (required)>'
   /Library/Ruby/Gems/2.0.0/gems/rake-10.4.2/lib/rake/task.rb:240:in `call'
   /Library/Ruby/Gems/2.0.0/gems/rake-10.4.2/lib/rake/task.rb:240:in `block in execute'
   /Library/Ruby/Gems/2.0.0/gems/rake-10.4.2/lib/rake/task.rb:235:in `each'
   /Library/Ruby/Gems/2.0.0/gems/rake-10.4.2/lib/rake/task.rb:235:in `execute'
   /Library/Ruby/Gems/2.0.0/gems/rake-10.4.2/lib/rake/task.rb:179:in `block in invoke_with_call_chain'
    /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/monitor.rb:211:in `mon_synchronize'
   /Library/Ruby/Gems/2.0.0/gems/rake-10.4.2/lib/rake/task.rb:172:in `invoke_with_call_chain'
    /Library/Ruby/Gems/2.0.0/gems/rake-10.4.2/lib/rake/task.rb:165:in `invoke'
    /Library/Ruby/Gems/2.0.0/gems/rake-10.4.2/lib/rake/application.rb:150:in `invoke_task'
    /Library/Ruby/Gems/2.0.0/gems/rake-10.4.2/lib/rake/application.rb:106:in `block (2 levels) in top_level'
    /Library/Ruby/Gems/2.0.0/gems/rake-10.4.2/lib/rake/application.rb:106:in `each'
    /Library/Ruby/Gems/2.0.0/gems/rake-10.4.2/lib/rake/application.rb:106:in `block in top_level'
    /Library/Ruby/Gems/2.0.0/gems/rake-10.4.2/lib/rake/application.rb:115:in `run_with_threads'
    /Library/Ruby/Gems/2.0.0/gems/rake-10.4.2/lib/rake/application.rb:100:in `top_level'
    /Library/Ruby/Gems/2.0.0/gems/rake-10.4.2/lib/rake/application.rb:78:in `block in run'
    /Library/Ruby/Gems/2.0.0/gems/rake-10.4.2/lib/rake/application.rb:176:in   `standard_exception_handling'
    /Library/Ruby/Gems/2.0.0/gems/rake-10.4.2/lib/rake/application.rb:75:in `run'
    /Library/Ruby/Gems/2.0.0/gems/rake-10.4.2/bin/rake:33:in `<top (required)>'
    /usr/local/bin/rake:23:in `load'
    /usr/local/bin/rake:23:in `<main>'
    Tasks: TOP => db:migrate

_create_users.rb&LT; ActiveRecord的::迁移

def change
 create_table :users do |t|
  t.string :name
  t.string :email

  t.timestamps null: false
end

_microposts.rb&LT; ActiveRecord的::迁移

 def change
create_table :microposts do |t|
  t.text :content
  t.references :user, index: true, foreign_key: true

  t.timestamps null: false
end
add_index :microposts, [:user_id, :created_at]
end

AddIndexToUsersEmail&LT; ActiveRecord的::迁移

  def change
    add_index :users, :email, unique: true
  end

AddPasswordDigestToUsers&LT; ActiveRecord的::迁移

   def change
      add_column :users, :password_digest, :string
   end

AddRememberDigestToUsers&LT; ActiveRecord的::迁移

   def change
      add_column :users, :remember_digest, :string
   end

AddAdminToUsers&LT; ActiveRecord的::迁移

     def change
        add_column :users, :admin, :boolean
     end

AddActivationToUsers&LT; ActiveRecord的::迁移

     def change
          add_column :users, :activation_digest, :string
          add_column :users, :activated, :boolean,  default: false
          add_column :users, :activated_at, :datetime
     end

CreateRelationships&LT; ActiveRecord的::迁移

     def change
create_table :relationships do |t|
  t.integer :follower_id
  t.integer :followed_id

  t.timestamps null: false
   end
     add_index :relationships, :follower_id
     add_index :relationships, :followed_id
     add_index :relationships, [:follower_id, :followed_id], unique: true
   end

的database.yml

 development:
 adapter: postgresql
 encoding: unicode
 database: blog_development
 pool: 5
 username: ******
 password:  

1 个答案:

答案 0 :(得分:0)

从micropost中删除foreign_key:true并添加外键,如: -

def change
    create_table :microposts do |t|
        t.text :content
        t.references :user, index: true, foreign_key: true
        t.timestamps :null => false
    end
    add_index :microposts, :created_at
end