Gorm 配列インターフェイスでの列数の不一致の解決
配列インターフェイスで Gorm の Exec メソッドを使用して一括挿入を実行しようとすると、エラーが発生します列数の不一致を示す場合があります。このエラーは、指定された値が SQL クエリで定義された列の数と一致しない場合に発生します。
この問題を解決するには、Exec メソッドに渡される値が ... 演算子を使用して分散されていることを確認します。これにより、スライス全体を単一の値として渡すのではなく、スライス要素を個別の引数として扱うようにコンパイラに指示します。
以下の更新されたコードは、... 演算子の正しい使用法を示しています。
tx := dB.GetWriteDB().Begin() sqlStr := "INSERT INTO city(code, name) VALUES (?, ?),(?, ?)" vals := []interface{}{} vals = append(vals, "XX1", "Jakarta") vals = append(vals, "XX2", "Bandung") tx.Exec(sqlStr, vals...) tx.Commit() if err := tx.Error(); err != nil { // handle error }
... 演算子を使用すると、vals スライス内の値が個々の引数に展開され、SQL ステートメント内の対応する列に正しく割り当てられます。これにより、列数の不一致が解消され、一括挿入が成功するようになります。
以上が一括挿入中の Gorm の列数の不一致エラーを修正する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。