续集迁移没有运行?

时间:2010-04-13 06:31:39

标签: ruby sequel

在续集中的迁移遇到一些麻烦,可能会使用另一组眼睛。 我正在运行看起来正常的迁移,但没有创建表。它肯定是连接的,因为我可以看到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 个答案:

答案 0 :(得分:3)

运行

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

-E添加了一个记录器,以便您可以看到实际发生的情况,并且&gt;将输出重定向到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

使用匿名类而不是命名类可以降低命名空间冲突的风险。