2017-05-10 8 views
1

insert_all이 created_dates를 자동으로 추가하지 않으므로 datetime을 넣으려고하고 있는데 잘못된 것을 알 수 없습니다.Ecto 삽입시의 날짜 시간 오류

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) 

내 오류 메시지는 다음과 같습니다

{{2017, 5, 10}, {20, 28, 42, 0}}ChatApp.Roles.RoleMasterParameters.created_date에 대한 insert_all에 유형과 일치하지 않습니다 : 그것은으로 날짜를 회전 utc_datetime

ecto.schema에서을 튜플 즈,하지만 내가 왜 싫어하는 지 모르겠다.

나는 Ecto.Schema 코드를 통해 갔다 붙어있어 그것은 튜플을 원하는 것처럼 보이지만, 분명히 뭔가를 놓치고, 감사합니다!

+0

기본 타임 스탬프는() UTC없는 마이그레이션 및 스키마 파일에 호출합니다. 둘 다 동일해야합니다. 마이그레이션 파일과 스키마 파일에서'timestamps (type : : utc_datetime)' –

+0

나는 주석을 고맙게 여긴다. 그러나 나는 그것을 고쳤다! Ecto.Schema 클래스를 사용하지 않고 이미 형식을 변경하기 위해 timestamps_opts를 변경하는 매크로를 작성했습니다. –

답변

2

다른 사람이이 문제를 겪고있는 경우에 대비하여 여기에서 나가 보겠습니다.

이 문제는 쿼리가 스키마가 없기 때문에 created_date를 erlang 시간으로 캐스팅하기 때문에 발생합니다.

내가 여기 insert_all로 이동합니다

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

그런 다음 비약 할 수있는 얼랑 시간을 캐스팅 시도와 실패를 삽입물에. 이것은 내가 그것을 해결하기 위해 사용되는 것입니다

:

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)