一括挿入を作成しようとしています。gormを使用していますgithub.com/jinzhu/gorm
import (
"fmt"
dB "github.com/edwinlab/api/repositories"
)
func Update() error {
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()
return nil
}
しかし、エラーが発生しました:
エラー 1136: 間違ったクエリを返すため、列数が行 1 の値数と一致しません
INSERT INTO city(code, name) VALUES ('XX1','Jakarta','XX2','Bandung', %!v(MISSING)),(%!v(MISSING), %!v(MISSING))
手動クエリを使用すると動作します:
tx.Exec(sqlStr, "XX1", "Jakarta", "XX2", "Bandung")
以下が生成されます。
INSERT INTO city(code, name) VALUES ('XX1', 'Jakarta'),('XX2', 'Bandung')
問題は、配列インターフェイスを作成して文字列を次のように生成する方法です"XX1", "Jakarta", ...
手伝ってくれてありがとう。