2010-09-08 88 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,因爲這是爲我修復它。

相關問題