Beheben von Spaltenanzahlkonflikten in der Gorm-Array-Schnittstelle
Beim Versuch, eine Masseneinfügung mithilfe der Exec-Methode von Gorm mit einer Array-Schnittstelle auszuführen, tritt ein Fehler auf kann auftreten, was auf eine Nichtübereinstimmung der Spaltenanzahl hinweist. Dieser Fehler tritt auf, wenn die bereitgestellten Werte nicht mit der Anzahl der in der SQL-Abfrage definierten Spalten übereinstimmen.
Um dieses Problem zu beheben, stellen Sie sicher, dass die an die Exec-Methode übergebenen Werte mithilfe des ...-Operators verteilt werden. Dadurch wird der Compiler angewiesen, die Slice-Elemente als einzelne Argumente zu behandeln, anstatt das gesamte Slice als einzelnen Wert zu übergeben.
Der aktualisierte Code unten zeigt die korrekte Verwendung des ...-Operators:
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 }
Durch die Verwendung des ...-Operators werden die Werte im Vals-Slice in einzelne Argumente expandiert, die dann korrekt den entsprechenden Spalten in der SQL-Anweisung zugewiesen werden. Dadurch wird die Nichtübereinstimmung der Spaltenanzahl beseitigt und eine erfolgreiche Masseneinfügung ermöglicht.
Das obige ist der detaillierte Inhalt vonWie behebt man Gorms Fehler bei der Spaltenanzahl-Nichtübereinstimmung bei Masseneinfügungen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!