मैंने एक func बनाया है जो MySQL डेटाबेस पर क्वेरी निष्पादित करता है। मैं इस पैकेज का उपयोग करता हूं "github.com/go-sql-driver/mysql"

लेकिन अगर मैं इसे चलाता हूं:

...
err := database.ExecuteSql("INSERT INTO xxx(field1, field2, field3) VALUES(?, ?, ?)", "field1", 123, time.Now())
...
func ExecuteSql(cmd string, , args ...interface{}) error {
  ctx := context.Background()
  _, err := db.ExecContext(ctx, cmd, args)
  ctx.Done()
  ...
}

यह मुझे देता है "एसक्यूएल: कनवर्टिंग तर्क $ 1 प्रकार: असमर्थित प्रकार [] इंटरफ़ेस {}, इंटरफ़ेस का एक टुकड़ा"

0
Matteo Zambon 26 पद 2020, 13:56
3
क्या आपने _, err := db.ExecContext(ctx, cmd, args...) की कोशिश की?
 – 
Emin Laletovic
26 पद 2020, 14:00
आप सही हे!!! धन्यवाद, इसे पोस्ट करें और मैं सही के रूप में चिह्नित करूंगा !!
 – 
Matteo Zambon
26 पद 2020, 15:23

1 उत्तर

सबसे बढ़िया उत्तर

जब आप इस तरह की विधि निष्पादित करते हैं:

_, err := db.ExecContext(ctx, cmd, args)

आप args को केवल एक []interface{} तर्क के रूप में पास करते हैं। स्लाइस ExecContext विधि के तर्क के रूप में समर्थित नहीं हैं, जब तक कि यह []byte न हो।

आपको args के साथ अनपैक ऑपरेटर का उपयोग करने की आवश्यकता है:

_, err := db.ExecContext(ctx, cmd, args...)
1
Emin Laletovic 26 पद 2020, 16:13