Rake db:迁移错误“不知道如何构建任务”

我有一个表,我在需要小数位的字段上使用整数,所以我试图创建一个迁移,将字段类型从整数更改为float / real。 我的数据库是sqllite3,我正在使用rails3。

我跑了

 rails生成迁移ChangeMeasureColumnOnIngredients 

创建初始迁移文件,然后将类更新到

 class ChangeMeasureColumnOnIngredients <ActiveRecord :: Migration
   def self.up
     change_column:ingredients,:measure,:real
  结束

我运行rake db:migrate并返回正常。

当我通过我的rails应用程序插入一个值时,它没有返回小数位。 我开始认为许多rails不知道’real’是什么作为数据类型,因此我将迁移更改为

  change_column:ingredients,:measure,:float 

然后我跑了

  rake db:migrate change_measure_column_on_ingredients 

现在我收到以下错误

 c:\ Ruby192 \ rails3rc> rake db:migrate change_measure_column_on_ingredients(在c:/ Ruby192 / rails3rc中)rake aborted! 不知道如何构建任务'change_measure_column_on_ingredients'C:/Ruby192/lib/ruby/1.9.1/rake.rb:1720:in []' C:/Ruby192/lib/ruby/1.9.1/rake.rb:2040:in invoke_task'C:/Ruby192/lib/ruby/1.9.1/rake.rb:2019:top_level中的block (2 levels) in top_level' C:/Ruby192/lib/ruby/1.9.1/rake.rb:2019:in每个'C:/Ruby192/lib/ruby/1.9.1/rake.rb:2019: block in top_level' C:/Ruby192/lib/ruby/1.9.1/rake.rb:2058:in中的block in top_level' C:/Ruby192/lib/ruby/1.9.1/rake.rb:2058:in standard_exception_handling'C:/Ruby192/lib/ruby/1.9.1/rake.rb:2013:在top_level' C:/Ruby192/lib/ruby/1.9.1/rake.rb:1992:in运行'C:/ Ruby192 / bin / rake:31:in'' 

我尝试将:float更改为:real,但我仍然遇到了这个错误。

谁能告诉我我做错了什么? 我是铁杆新手,还在学习。

你的rake调用指示rake构建任务db:migrate后跟任务change_measure_column_on_ingredients ,这显然不是你想要的,因为后者不是rake任务。

要运行特定的迁移,您需要提供迁移的VERSION 。 这是迁移名称前面的文件名中的数字。 您可以像这样向上或向下迁移它:

 rake db:migrate:down VERSION=123456789 rake db:migrate:up VERSION=123456789 

或者,您可以通过执行以下操作来向下移动上一次(您还可以为此指定VERSION ):

 rake db:migrate:redo 

还有其他选择。 如果您运行rake --describe db:migrate您将获得更多信息。

虽然在这个特定的例子中,OP发布的堆栈跟踪显示错误正在尝试同时执行两个任务,我在谷歌搜索后找到了这个页面,只是想为未来的googlers添加答案:

尝试包括RAILS_ENV=developmentRAILS_ENV=test因为这是我修复它的原因。

确保你的命令是rake db:migrate 。 注意:migrate之间没有任何空间