在Phoenix中使用自定义SQL代码生成迁移

Quo*_*aru -1 sql elixir ecto phoenix-framework

我想Ecto使用自定义SQL代码生成新的迁移,而不是使用提供的帮助程序.当前的mix生成器任务仅处理模型.

如何在迁移中编写原始SQL代码?

She*_*yar 7

首先使用提供的Mix Task创建一个新的迁移,并根据需要调用它:

$ mix ecto.gen.migration my_custom_migration
Run Code Online (Sandbox Code Playgroud)

现在编辑新生成的迁移模块,priv/repo/migrations/change使用updown方法替换空方法.

然后execute/1,您可以使用原始SQL代码调用它们:

defmodule MyApp.Repo.Migrations.MyCustomMigration do
  use Ecto.Migration

  def up do
    # Your custom SQL code
    execute "CREATE TABLE some_table ..."
  end

  def down do
    execute "DROP TABLE some_table;"
  end
end
Run Code Online (Sandbox Code Playgroud)

来源:在Ecto迁移中执行原始SQL