ped*_*ete 3 sqlite rake ruby-on-rails
我有一个表,我在需要小数位的字段上使用整数,所以我试图创建一个迁移,将字段类型从整数更改为float/real.我的数据库是sqllite3,我正在使用rails3.
我跑了
rails generate migration ChangeMeasureColumnOnIngredients
创建初始迁移文件,然后将类更新为
class ChangeMeasureColumnOnIngredients < ActiveRecord::Migration
def self.up
change_column :ingredients, :measure, :real
end
我运行了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 (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:inblock (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:inblock 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:intop_level' C:/Ruby192/lib/ruby/1.9.1/rake.rb:1992:inrun' 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
Run Code Online (Sandbox Code Playgroud)
或者,您可以通过执行以下操作来执行上次迁移,然后执行以下操作(您也可以VERSION为此指定):
rake db:migrate:redo
Run Code Online (Sandbox Code Playgroud)
还有其他选择.如果你跑步,rake --describe db:migrate你会得到更多的信息.
| 归档时间: |
|
| 查看次数: |
16464 次 |
| 最近记录: |