Ruby on rails 3 在迁移中混淆了新列名和类型,现在架构中的表已损坏

Ruby on rails 3 在迁移中混淆了新列名和类型,现在架构中的表已损坏,ruby-on-rails-3,migration,Ruby On Rails 3,Migration,我已经使用迁移将多个列添加到模型中 class AddManyfieldsToBooks < ActiveRecord::Migration def self.up add_column :books, :item_one, :float add_column :books, :item_two, :float end def self.down remove_column :books, :item_one remove_column :b

我已经使用迁移将多个列添加到模型中

class AddManyfieldsToBooks < ActiveRecord::Migration
  def self.up
    add_column :books, :item_one, :float
    add_column :books, :item_two, :float

  end

  def self.down
    remove_column :books, :item_one
    remove_column :books, :item_two    
  end
end
bundle exec rake db:rollback STEP=1
然后我运行bundle exec rake db:migrate命令

但是,新字段尚未添加到schema.rb

# Could not dump table "books" because of following StandardError
#   Unknown type 'item_one' for column 'float'
自从我上次使用rails已经有一段时间了,我一直在想我到底出了什么问题。我以前为这个项目一次运行一个字段的迁移,它们都很好。我有什么遗漏吗

谢谢

编辑1:我已经意识到当我完成我写的迁移时

rails migration add_manyfields_to_books float:item_one
而不是

rails migration add_manyfields_to_books item_one:float
这导致schema.rb中出现以下错误

# Could not dump table "books" because of following StandardError
#   Unknown type 'item_one' for column 'float'
我已经创建了一个新的分支“添加项目”来更改数据库。但是,即使返回到主分支,模式中也存在相同的错误。我已尝试回滚迁移

class AddManyfieldsToBooks < ActiveRecord::Migration
  def self.up
    add_column :books, :item_one, :float
    add_column :books, :item_two, :float

  end

  def self.down
    remove_column :books, :item_one
    remove_column :books, :item_two    
  end
end
bundle exec rake db:rollback STEP=1
但这并不能解决问题。我还删除了正在进行这些更改的AddingItems分支,希望它们不会出现在主文件中


解决这个问题的最佳方法是什么?我应该删除Books表并重新添加它吗?

我通过删除整个Books表并使用包含我所需额外字段的新迁移重新添加它来解决这个问题。

我通过删除整个Books表并使用包含我所需额外字段的新迁移重新添加它来解决这个问题。

就是这些字段添加到MySql表中?如果是,请将其移除。然后从
schema_migrations
表中删除迁移版本。从schema.rb中删除垃圾邮件。重新运行语法正确的迁移。您好,谢谢您的建议,我最终删除了整个表,并再次添加了新字段。这些字段是否添加到MySql表中?如果是,请将其移除。然后从
schema_migrations
表中删除迁移版本。从schema.rb中删除垃圾邮件。重新运行语法正确的迁移。您好,谢谢您的建议,我最终删除了整个表,并再次添加了新字段