Elixir 将UUID列表插入原始SQL查询(不能使用片段)
我在插入UUID列表以在查询中执行Elixir 将UUID列表插入原始SQL查询(不能使用片段),elixir,ecto,Elixir,Ecto,我在插入UUID列表以在查询中执行时遇到问题 Ecto.Adapters.SQL.query!(Repo, " WHERE some_id IN ($1) ", [some_list_of_ids]) 这给了我一个错误**(ArgumentError)Postgrex需要一个16字节的二进制文件,得到[“4ca72ee7-61e2-4450-8dac-bdd7cf6b3df9”,“83640dcc-9674-462c-881b-0ce2ed8f3fba”…。即使我用UUID.str
时遇到问题
Ecto.Adapters.SQL.query!(Repo, "
WHERE
some_id IN ($1)
", [some_list_of_ids])
这给了我一个错误**(ArgumentError)Postgrex需要一个16字节的二进制文件,得到[“4ca72ee7-61e2-4450-8dac-bdd7cf6b3df9”,“83640dcc-9674-462c-881b-0ce2ed8f3fba”…
。即使我用UUID.string\u to\u二进制文件将UUID转换为二进制文件,我仍然会遇到这个错误!
我如何插入这个?尝试将“虚线”UUID转换为二进制UUID
这应该起作用:
uuids = [
"f3c106c3-943f-4270-b129-59a2fda48925",
"5ead56f1-9b7f-4289-9a8d-236c2812d82a",
"cf4b7ddc-1369-4d99-b35d-8dae6c9e85d9"
]
binary_uuids = Enum.map uuids, fn uuid -> Ecto.UUID.dump(uuid) |> elem(1) end
query = "select * from accounts where id = ANY($1)"
Ecto.Adapters.SQL.query!(Repo, query, [binary_uuids])
请指定您使用的EXTO版本(2.12
我猜)和表定义。“4ca72ee7-61e2-4450-8dac-bdd7cf6b3df9”
二进制肯定超过16字节。