在我的用例中,我想编写一个函数,在 Golang 中的表中插入一行,如果该行不可用的话。我正在使用 MySql 和 github.com/go-sql-driver/mysql .尝试通过此函数插入时出现错误。但我可以通过 MySql 控制台运行来插入。这是函数定义,
func AddTag(t *objects.Tag) {
//Get connection object
db, err := GetDBConnection()
defer db.Close()
// Prepare statement for inserting data
stmtIns, err := db.Prepare("INSERT INTO tag (tag_id, tag_name, metatag_id) SELECT * FROM (SELECT NULL, ?, ?) AS tmp WHERE NOT EXISTS ( SELECT tag_name FROM tag WHERE tag_name = ? ) LIMIT 1")
if err != nil {
fmt.Println("FATAL ", time.Now(), "Error in prepare statement for Tag insert ")
panic(err.Error())
}
defer stmtIns.Close() // Close the statement when we leave main() / the program terminates
_, err = stmtIns.Exec(t.TagName, t.MetaTagId, t.TagName) // Insert tuples
if err != nil {
fmt.Println("FATAL ", time.Now(), "Error in insert to Tag ")
panic(err.Error())
}
}
编辑 1 : 我收到以下错误,
FATAL 2015-06-14 17:13:15.631487042 -0700 PDT Error in insert to Tag
panic: Error 1136: Column count doesn't match value count at row 1
goroutine 1 [running]:
main.AddTag(0x1112e1a0, 0x0, 0x0)
谁能帮我解决这个问题?谢谢
最佳答案
“列计数与值计数不匹配”意味着您没有为表中没有默认值的列提供值。
检查您的表架构(DESCRIBE 标记;
)并确保您为其他列提供值,或者它们具有默认值。
关于mysql - 如何仅在 Golang 的表中不可用时插入元组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30835388/