Hacktoberfest 2026:メンテナが10月に向けて印を付けた、オープンで初心者向けの issue。 Hacktoberfest の issue を見る

varbinary to datetime2 conversion failure on non-required field

オープン
#168 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る

まだ誰も着手していません。

評価

難易度
4/5
見積もり時間
3〜5日
初心者へのやさしさ
35/100
issue の種類
バグ
明瞭さ
おおむね明確
活発さ
停滞
技術スタック
elixir, sql
領域
databases

調査の方向性

このレポートには、リポジトリのファイルパスもテストパスも記載されていません。まず SQL Server に対して MinimalProof の insert_all 例を実行し、明示的な nil の datetime2 値に対する TDS/Ecto の経路を追跡してください。完了の条件は、オプションの nil フィールドを保持したまま、insert が無効な varbinary-to-datetime2 変換を試行しなくなることです。

索引モデルが issue の本文から書いたものです。

説明

bug

#124 may be the same issue or related. I am getting an error trying to insert when a datetime2 field which has an explicit nil.

defmodule MinimalProof do

  alias MyRecord

  def proof_of_issue() do
    bulk_inserts = [
      %{
        my_date: nil # utc_datetime, optional in the schema
      }
    ]

    try do
      Repo.insert_all(MyRecord, bulk_inserts)
    rescue
      err -> IO.puts("it fails in here because of #{inspect(err)}")
    end
  end
end
it fails in here because of %Tds.Error{message: nil, mssql: %{state: 3, number: 257, server_name: ".\\SQLEXPRESS", class: 16, msg_text: "Implicit conversion from data type varbinary to datetime2 is not allowed. Use the CONVERT function to run this query.", line_number: 1, proc_name: ""}}

I have a workaround now of dropping nil date fields from the inserts.

Environment and library versions

SQL Server 16
phoenix_ecto 4.6
ecto_sql 3.12
tds 2.3

主要言語
Elixir
スター
119
フォーク
87
PR マージ指標
30日以内にマージされた PR はありません

環境構築

  • Dockerfile または Docker Compose ファイルあり
  • プルリクエストのテンプレートなし
  • コントリビューションガイドなし

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

elixir-ecto/tds のほかの issue

elixir-ecto/tds の issue をすべて見る

似ている issue

Elixir の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。