解決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中文網其他相關文章!