【问题标题】:How to add a down block for Sequel add_unique_constraint migration如何为 Sequel add_unique_constraint 迁移添加向下块
【发布时间】:2017-10-02 01:50:13
【问题描述】:

我在 PostgreSQL 中有一个 Sequel 迁移,它可以正常工作,但不会失败:

Sequel.migration do
  change do
    alter_table(:files) do
      add_unique_constraint [:name, :folder]
    end
  end
end

当试图从这个块向下迁移时,Sequel 的错误消息说这是一个“不可逆的迁移”,并建议编写我的“自己的向下方法”。

我如何编写这个特定迁移的 down 方法?

【问题讨论】:

    标签: ruby postgresql sequel


    【解决方案1】:

    根据docs

    Sequel.migration do
      up do
        alter_table(:files) do
          add_unique_constraint [:name, :folder]
        end
      end
    
      down do
        alter_table(:files) do
          drop_constraint(:your_constraint_name, :type=>:unique)
        end
      end
    end
    

    您必须弄清楚唯一性约束的名称。它应该出现在您的架构中,并且应该类似于 index_files_on_name_and_folder

    【讨论】:

    • 谢谢!我不明白的唯一约束的名称。但另一个问题:我可能应该自己命名唯一约束,以便在所有环境中都相同?您链接的同一文档中有一些信息。
    • 这似乎适用于 up 块:"add_unique_constraint [:name, :folder], :unique_constraint_name => "files_name_folder_key"
    猜你喜欢
    • 2018-10-18
    • 2017-05-07
    • 2015-11-06
    • 1970-01-01
    • 2014-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-14
    相关资源
    最近更新 更多