Heim >Backend-Entwicklung >Golang >Wie behebt man Gorms Fehler bei der Spaltenanzahl-Nichtübereinstimmung bei Masseneinfügungen?

Wie behebt man Gorms Fehler bei der Spaltenanzahl-Nichtübereinstimmung bei Masseneinfügungen?

Linda Hamilton
Linda HamiltonOriginal
2024-11-25 09:30:12488Durchsuche

How to Fix Gorm's Column Count Mismatch Error During Bulk Inserts?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn