bugfix> elixir > 投稿

だから、データベース内のモデルに新しい列を追加するための外部移行を作成していますが、この新しい列が列の最後に配置されるため、列の順序を変更したいので、このように試しました:

def change do
  alter table(:users) do
    add :password_hash, :string, after: :email
  end
end

しかし、それは効果がなく、エラーをスローしないようです。

PD:Maria DBを使用しています。

回答 2 件
  • 自宅や学校でこれを行うことは絶対に勧めません:)、それがうまくいくかどうかもわかりませんが、そうすべきです。そうでない場合はお知らせください。回答を削除します。書式設定のためにコメントとしてではなく投稿する。

    def change do
      query = "ALTER TABLE users
               ADD COLUMN password_hash VARCHAR(255)
               AFTER email;"
      Ecto.Adapters.SQL.query!(Repo, query, [])
    end
    
    

    Ecto.Adapters.SQL.query/4 を使用します  生のSQLを実行します。


    NB 以下の@PatrickOscityによる非常に貴重なコメントも確認してください。

  • 使用しているデータベースを記述しなかったため、列の並べ替えをサポートしていないPostgreSQLを想定しています。 thoにはハック的な回避策がいくつかありますが、もちろんectoには実装されていません。

    通常、列の順序を変更する理由や必要はありません。なぜ必要なのですか?

あなたの答え