Миграция сиквела не работает? - PullRequest
1 голос
/ 13 апреля 2010

Возникли проблемы с Миграциями в Сиквеле, и он может использовать другой набор глаз. Я запускаю миграцию, которая выглядит нормально, но таблица не создана. Это определенно соединение, потому что я вижу, что таблица schema_info была создана. -M 0/1 меняет версию так, как вы ожидаете, но таблицы пока нет.

Команда:

sequel -m . -M 1 ~/Desktop/dbtest/testdb.yml

001_testdb.rb:

class TestDb < Sequel::Migration
  def up
    create_table( "terminals") do
      primary_key :id
      Integer :location_id
      Integer :merchant_id
      BigDecimal :terminal_id, :size=>[11, 0]
      String :reference, :size=>255
      DateTime :created_at
      DateTime :updated_at
      String :image, :default=>"default.jpg", :size=>255
  end
end
  def down
    drop_table :terminals
  end
end

Вывод в Postgres:

test_db=# \dt
        List of relations
Schema |    Name     | Type  |  Owner   
--------+-------------+-------+----------
public | schema_info | table | postgres
(1 row)

test_db=# select * from schema_info;
version 
---------
   1
(1 row)

1 Ответ

3 голосов
/ 16 апреля 2010

Run

sequel -m . -E > ~/Desktop/dbtest/testdb.yml

-E добавляет регистратор, чтобы вы могли видеть, что на самом деле происходит, а> перенаправляет вывод в файл журнала testdb.yml. Если это ваша первая миграция, вы, вероятно, захотите удалить базу данных и воссоздать ее (или хотя бы таблицу schema_info). И, очевидно, вы должны быть в каталоге с миграциями для -m. на работу.

Я бы также рекомендовал следующий синтаксис для классов миграции:

Class.new(Sequel::Migration) do
  def up
    create_table(:terminals) do
      primary_key :id
      Integer :location_id
      Integer :merchant_id
      BigDecimal :terminal_id, :size=>[11, 0]
      String :reference, :size=>255
      DateTime :created_at
      DateTime :updated_at
      String :image, :default=>"default.jpg", :size=>255
    end
  end
  def down
    drop_table :terminals
  end
end

Использование анонимных классов вместо именованных классов снижает риск столкновения пространства имен.

...