Rake DB: ошибка переноса "не знаю, как построить задачу" - PullRequest
3 голосов
/ 08 сентября 2010

У меня есть таблица, в которой я использовал целое число в поле, которое требует десятичных знаков, поэтому я пытаюсь создать миграцию, которая меняет тип поля с целого на 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, оно не вернуло десятичное число. Я начал думать, что многие рельсы не знают, что такое «реальный» как тип данных, поэтому я изменил миграцию на

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 <code>[]'
C:/Ruby192/lib/ruby/1.9.1/rake.rb:2040:in</code>invoke_task'
C:/Ruby192/lib/ruby/1.9.1/rake.rb:2019:in <code>block (2 levels) in top_level'
C:/Ruby192/lib/ruby/1.9.1/rake.rb:2019:in</code>each'
C:/Ruby192/lib/ruby/1.9.1/rake.rb:2019:in <code>block in top_level'
C:/Ruby192/lib/ruby/1.9.1/rake.rb:2058:in</code>standard_exception_handling'
C:/Ruby192/lib/ruby/1.9.1/rake.rb:2013:in <code>top_level'
C:/Ruby192/lib/ruby/1.9.1/rake.rb:1992:in</code>run'
C:/Ruby192/bin/rake:31:in `'

Я попытался изменить: float обратно на: real, но я все еще получаю эту ошибку.

Может кто-нибудь сказать мне, что я делаю не так? Я новичок в рельсах и все еще учусь.

Ответы [ 3 ]

6 голосов
/ 08 сентября 2010

Ваш рейк-вызов дал команду 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, вы получите больше информации.

0 голосов
/ 05 марта 2016

Хотя в данном конкретном случае трассировка стека, опубликованная OP, показывает, что ошибка пытается выполнить две задачи одновременно, я нашел эту страницу после поиска в Google и просто хочу добавить к ответу будущих гуглеров:

попробуйте включить либо RAILS_ENV=development, либо RAILS_ENV=test, так как это исправило это для меня.

0 голосов
/ 03 декабря 2013

убедитесь, что ваша команда rake db:migrate.Обратите внимание, что между : и migrate

нет пробелов
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...