使用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
Run Code Online (Sandbox Code Playgroud)
出于某种原因,当我执行Query带有参数的时,总是会从中得到一个unexpected command tag Q错误Commit()。这是什么错误(什么是Q?),为什么会出现此错误?
我相信这是造成错误的地方。
首先,我同意评论中的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。
| 归档时间: |
|
| 查看次数: |
1450 次 |
| 最近记录: |