因此,我正在创建一个ecto迁移,用于在数据库中向我的模型添加新列,并且我想更改列的顺序,因为这个新列放在列的末尾,所以我试过这样的话:
def change do
alter table(:users) do
add :password_hash, :string, after: :email
end
end
但它似乎没有效果,也没有引发错误。
PD:我使用的是Maria DB。
答案 0 :(得分:1)
我绝对不会建议在家里或学校这样做:),我也不确定它是否有效,但它应该。如果没有,请告诉我,我会删除答案;为格式化而不是发表评论。
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非常有价值的评论。
答案 1 :(得分:0)
由于您没有编写您正在使用的数据库,我假设PostgreSQL不支持列重新排序。有一些hacky变通办法,当然没有在ecto中实现。
通常没有理由或需要改变列顺序。你为什么需要它?