2010-09-08 68 views
3

我有一个表,我在需要小数位的字段上使用整数,所以我试图创建一个迁移,它改变字段类型从整数到浮点/实数。我的数据库是sqllite3,我正在使用rails3。Rake db:迁移错误“不知道如何构建任务”

我跑

 
rails generate migration ChangeMeasureColumnOnIngredients

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

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

我跑耙分贝:迁移和它返回的罚款。

当我通过我的rails应用程序插入一个值时,它没有返回小数位。我开始想,许多轨不知道什么是“真实”是作为一个数据类型,所以我改变了迁移

change_column :ingredients, :measure, :float

然后我跑

rake db:migrate change_measure_column_on_ingredients
现在
c:\Ruby192\rails3rc>rake db:migrate change_measure_column_on_ingredients 
(in c:/Ruby192/rails3rc) 
rake aborted! 
Don't know how to build task '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:ininvoke_task' 
C:/Ruby192/lib/ruby/1.9.1/rake.rb:2019:in block (2 levels) in top_level' 
C:/Ruby192/lib/ruby/1.9.1/rake.rb:2019:ineach' 
C:/Ruby192/lib/ruby/1.9.1/rake.rb:2019:in block in top_level' 
C:/Ruby192/lib/ruby/1.9.1/rake.rb:2058:instandard_exception_handling' 
C:/Ruby192/lib/ruby/1.9.1/rake.rb:2013:in top_level' 
C:/Ruby192/lib/ruby/1.9.1/rake.rb:1992:inrun' 
C:/Ruby192/bin/rake:31:in `'

我想我得到以下错误将:float更改为:real,但我仍然遇到该错误。

有人可以告诉我我做错了什么吗? 我是新来的铁路和仍在学习。

回答

6

您的耙路电话已指示耙将生成任务db:migrate,然后是任务change_measure_column_on_ingredients,显然这不是您想要的,因为后者不是耙路任务。

要运行特定迁移,您需要提供迁移的VERSION。这是迁移名称前的文件名中的数字。了通过执行以下操作

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

或者你可以把过去的迁移下来,然后(你也可以指定这个VERSION):您可以向下迁移它还是这样

rake db:migrate:redo 

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

-4

确保您的命令是rake db:migrate。对没有:migrate

0

之间的任何空间,同时在这个特定的情况下发表OP堆栈跟踪显示错误试图同时做两个任务,注意,我找到了这个网页谷歌搜索后,只是想增加未来谷歌的答案:

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

相关问题