Ruby On Rails Heroku db: мигрировать Прервано! - PullRequest
1 голос
/ 23 ноября 2010

Я отправил свое приложение в Heroku и сейчас пытаюсь запустить '$ heroku rake db: migrate'.Я получаю эту ошибку:

PGError: ОШИБКА: отношения "инвентаризации" не существует: ВЫБЕРИТЕ "инвентаризации". * ИЗ "инвентаризации"

На моей локальной машине все работает отлично.Локальный использует SQLite 3. Кроме того, предыдущие версии приложения работали просто отлично - предыдущие версии действительно включали модель запасов.Теперь я прочитал (почти) каждый пост в stackoverflow и в Интернете об этой проблеме, но я все еще не могу найти способ обойти это.Кто-нибудь советует, как заставить это работать?

Ruby 1.9.2 ROR 3

ОБНОВЛЕНИЕ .. Вот источник миграции, который создает таблицу инвентаризации:

class CreateInventories < ActiveRecord::Migration
  def self.up
    create_table :inventories do |t|
      t.decimal :initial_amount, :precision => 10, :scale => 2
      t.decimal :remaining_amount, :precision => 10, :scale => 2
      t.string :unit
      t.decimal :cost, :precision => 10, :scale => 2
      t.integer :type_id
      t.integer :brand_id
      t.integer :blend_id
      t.integer :user_id
      t.boolean :in

      t.timestamps
    end
  end

  def self.down
    drop_table :inventories
  end
end

Ответы [ 3 ]

1 голос
/ 23 ноября 2010

Использовали ли вы модель инвентаризации в своей миграции?Может быть, у вас произошла ошибка при переносе, например, вы отредактировали файл переноса после переноса локальной базы данных?

В любом случае, выполнение rake --trace db:migrate должно показать вам все сообщение об ошибке вместе с трассировкой стека -Вы найдете проблемную строку кода.

ОБНОВЛЕНИЕ:

В вашей трассировке стека (ссылка в комментарии) есть одна подозрительная строка:

...0-d4e1268c8981/mnt/config/environment.rb:5

Чтокод есть?

1 голос
/ 01 декабря 2010

РЕШЕНИЕ: Я наконец понял проблему.У меня был этот метод в моей модели пользователя:

def self.search( id )
  @inventory = Inventory.where(:primary_user [id])
  @cups = Cup.where(:user_id [id])

  @inventory + @cups
end

По какой-то причине это вызвало ошибки.Я обновил его, чтобы использовать вместо него @user.inventories и @user.cups.Спасибо всем.

1 голос
/ 23 ноября 2010

Ошибка указывает, что таблица не существует удаленно.Смотрите: http://docs.heroku.com/database#common-issues-migrating-to-postgresql

Я ожидаю, что предыдущий db: migrate создал таблицу, если только изменения базы данных не произошли вне задачи rake db.Я нахожу, что довольно легко получить это из синхронизации.Вы можете запустить определенные миграции, указав нужный метод миграции (вверх или вниз) и метку времени выполнения миграции.Пример:

heroku rake db:migrate:up VERSION=20101108092153

Запускает миграцию, сгенерированную 8.11.2010 в 9:21:53.Вы можете просмотреть свои миграции в папке db /, чтобы найти миграцию, которая содержит отсутствующую таблицу.

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