Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Elixir 将UUID列表插入原始SQL查询(不能使用片段)_Elixir_Ecto - Fatal编程技术网

Elixir 将UUID列表插入原始SQL查询(不能使用片段)

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

我在插入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.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字节。