Golang postgres提交未知命令错误?

Der*_*rek 2 postgresql go pq

使用postgres 9.3go 1.6

我一直在尝试与go pq库一起使用事务。

// Good
txn, _ := db.Begin()
txn.Query("UPDATE t_name SET a = 1")
err := txn.Commit() // err is nil

// Bad
txn, _ := db.Begin()
txn.Query("UPDATE t_name SET a = $1", 1)
err := txn.Commit() // Gives me a "unexpected command tag Q" error
// although the data is committed
Run Code Online (Sandbox Code Playgroud)

出于某种原因,当我执行Query带有参数的时,总是会从中得到一个unexpected command tag Q错误Commit()。这是什么错误(什么是Q?),为什么会出现此错误?

我相信是造成错误的地方。

Kil*_*nny 6

首先,我同意评论中的Dmitri,在这种情况下,您可能应该使用Exec。

但是,在收到相同的问题后,我开始进行挖掘:

查询返回2个参数,一个Rows指针和一个错误。使用Rows对象时,总是要做的就是在不使用它时将其关闭:

// Fixed
txn, _ := db.Begin()
rows, _ := txn.Query("UPDATE t_name SET a = $1", 1)
//Read out rows
rows.Close() //<- This will solve the error
err := txn.Commit()
Run Code Online (Sandbox Code Playgroud)

但是,当使用rows.Close()女巫向我指示这可能是的错误时,我看不到数据库流量的任何差异pq