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
使用uuid的Elixir Postgrex_Elixir - Fatal编程技术网

使用uuid的Elixir Postgrex

使用uuid的Elixir Postgrex,elixir,Elixir,我正在为我的数据库使用Postgrex库,我有以下问题:数据库中的一列的类型为uuid。我正在elixir中使用UUID模块,但每当我尝试将某些内容持久化到数据库时,就会出现以下错误:Postgrex需要16字节的二进制文件,而得到“3c5fda26-ea3b-4c77-8f19-06e106a61eda”。我试着把它存储为 一个普通的字符串,但正如您所看到的,这是不可能的。在将uuid持久化到数据库之前,我应该如何转换它?uuid是一个字符串,但不是“人类可读的字符串”。您所看到的3c5fda

我正在为我的数据库使用Postgrex库,我有以下问题:数据库中的一列的类型为
uuid
。我正在elixir中使用UUID模块,但每当我尝试将某些内容持久化到数据库时,就会出现以下错误:
Postgrex需要16字节的二进制文件,而得到“3c5fda26-ea3b-4c77-8f19-06e106a61eda”
。我试着把它存储为
一个普通的字符串,但正如您所看到的,这是不可能的。在将uuid持久化到数据库之前,我应该如何转换它?

uuid是一个字符串,但不是“人类可读的字符串”。您所看到的
3c5fda26-ea3b-4c77-8f19-06e106a61eda
而非UUID,它只是一种可能的人类可读表示形式。您需要的是传递直接的、内部的UUID表示,它实际上是16字节的二进制。要将字符串从十六进制表示形式解析为二进制表示形式,可以使用。

在架构中将字段的类型设置为二进制id

例如:

@primary_key {:id, :binary_id, autogenerate: true}
@derive {Phoenix.Param, key: :id}
schema “companies” do
 field :name, :string
 field :mission_statement, :string

 has_many :managers, EctoUuid.Manager
 timestamps
end

我刚刚发现UUID模块已经有了一个名为
UUID.string\u to\u binary的函数,最好使用此命令,而不是使用EXTOS',因为我根本没有使用EXTOS

您能提供一个用于持久化记录的命令吗?