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