gpt4 book ai didi

elixir - 插入期间 Ecto 日期时间错误

转载 作者:行者123 更新时间:2023-12-02 05:44:15 24 4
gpt4 key购买 nike

我试图输入一个日期时间,因为 insert_all 不会自动添加created_dates,而且我不知道我做错了什么。

currentTime = DateTime.utc_now

query = from rm in ChatApp.Roles.RoleMasters,
join: srp in ChatApp.Servers.ServerTypeParameters,
where: srp.parameter_role_capable_flag == "Y",
select: %{role_master_id: rm.id, server_type_code: srp.server_type_code, parameter_namespace: srp.parameter_namespace,
parameter: srp.parameter, parameter_value: srp.parameter_default_value,
user_changeable_flag: "Y", description: srp.description,
active_flag: "Y", created_date: ^currentTime}

roleMasterRows = ChatApp.Repo.all(query)


ChatApp.Repo.insert_all(ChatApp.Roles.RoleMasterParameters, roleMasterRows)

我的错误消息如下所示:

value {{2017, 5, 10}, {20, 28, 42, 0}} for ChatApp.Roles.RoleMasterParameters.created_date in insert_all does not match type :utc_datetime

在 ecto.schema 中,它将日期时间转换为元组,但我不明白为什么它不喜欢我的。

我被困住了,我浏览了 Ecto.Schema 代码,看起来它需要元组,但我显然错过了一些东西,谢谢!

最佳答案

我将把它留在这里,以防其他人遇到这个问题。

该问题源于这样一个事实:因为查询是无模式的,并将created_date 转换为erlang 时间。使用:

^currentTime

当我去这里 insert_all 时:

ChatApp.Repo.insert_all(ChatApp.Roles.RoleMasterParameters, role_master_rows)

然后它尝试将 erlang 时间转换为 elixir,但插入失败。

这是我用来修复它的:

current_time = DateTime.utc_now

query = from rm in ChatApp.Roles.RoleMasters,
join: srp in ChatApp.Servers.ServerTypeParameters,
where: srp.parameter_role_capable_flag == "Y",
select: %{role_master_id: rm.id, server_type_code: srp.server_type_code, parameter_namespace: srp.parameter_namespace, parameter: srp.parameter, parameter_value: srp.parameter_default_value, description: srp.description}

role_master_rows = query
|> ChatApp.Repo.all
|> Enum.map(&( Map.merge(&1, %{user_changeable_flag: "Y", active_flag: "Y", created_date: current_time})))


ChatApp.Repo.insert_all(ChatApp.Roles.RoleMasterParameters, role_master_rows)

关于elixir - 插入期间 Ecto 日期时间错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43902868/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com