rake aborted数据库不会迁移

时间:2014-11-26 04:21:58

标签: ruby-on-rails dbmigrate

我为“初创公司”创建了模型,视图和控制器。每个人(没有脚手架)。我有一个文件db> migrate>' 201 ..._ create_startups.rb'使用以下代码:

class CreateStartups < ActiveRecord::Migration
  def change
    create_table :startups do |t|
        t.string :name
        t.string :location
        t.string :description

      t.timestamps null: false
    end
  end
end

我跑了&#34;捆绑了exec rake db:migrate&#34;我收到了这个回复:

== 20141126011749 CreateStartups: migrating ===================================
-- create_table(:startups)
   -> 0.0155s
== 20141126011749 CreateStartups: migrated (0.0159s) ==========================

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

wrong number of arguments (1 for 0)/Users/kevinmircovich/.rvm/gems/ruby-2.0.0-p451/gems/activerecord-4.2.0.beta4/lib/active_record/connection_adapters/abstract_adapter.rb:271:in `initialize'

运行本地服务器并转到浏览器查看我的应用后,我会收到以下消息:

Migrations are pending. To resolve this issue, run: bin/rake db:migrate RAILS_ENV=development

Extracted source (around line #393):
392 def check_pending!(connection = Base.connection)
393       raise ActiveRecord::PendingMigrationError if ActiveRecord::Migrator.needs_migration?>.>(connection)
394     end
395
396     def load_schema_if_pending!

我跑了&#34; bin / rake db:migrate RAILS_ENV = development&#34;并且遇到了与我运行时相同的错误&#34;捆绑exec rake db:migrate&#34;:

  

错误的参数数量(1表示0)

3 个答案:

答案 0 :(得分:2)

时间戳上不需要“null:false”:它不是用户的输入:这些是由活动模型本身设置的,因此您可以删除参数。

答案 1 :(得分:1)

在Rails迁移中,t.timestamp宏添加了两列,created_at和updated_at。这些特殊列由Active Record自动管理(如果存在)。

新的recored创建时会自动更新&amp;更新。

请从t.timestamp中删除null:false参数。

class CreateStartups < ActiveRecord::Migration
  def change
    create_table :startups do |t|
        t.string :name
        t.string :location
        t.string :description

      t.timestamps 
    end
  end
end

答案 2 :(得分:1)

运行rake时收到了类似的错误:db migrate。为了解决我的问题,我运行了rake:db drop以删除我的数据库,因为我处于dev模式而没有生成数据库。然后我用rake db:create重新创建数据库,然后运行rake db:migrate成功。

运行rake db:migrate时出错 的ActiveRecord :: PendingMigrationError 迁移正在等待中; run&#39; bin / rake db:migrate RAILS_ENV = development&#39;解决这个问题。


决定使用:

rake db:drop - 这会将数据从数据库中删除 rake db:create rake db:migrate