【发布时间】:2016-04-26 21:52:10
【问题描述】:
使用postgres 9.3、go 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
由于某种原因,当我执行带有参数的Query 时,我总是从Commit() 中得到一个unexpected command tag Q 错误。这是什么错误(什么是 Q?),为什么会出现此错误?
我相信this 是造成错误的地方。
【问题讨论】:
-
您的语句没有返回任何行。试试执行。 Q 是发送到后端进行查询的协议标识符,对于执行它发送 E。
-
您忽略了来自
db.Begin()和txn.Query()的错误返回;其中一个可能有一个错误,可能会在txn.Commit() -
@DmitriGoldring,谢谢!这样就解决了。
标签: postgresql go pq