例如,我正在尝试在我的 mysql 数据库中创建一条新记录。在 sql.ErrTxDone 的情况下,它的实际含义是什么,如果事务已提交,我应该怎么做?
最佳答案
如果交易处于无法再使用的状态,您会收到此错误。
After a call to Commit or Rollback, all operations on the transaction fail with ErrTxDone.
还有sql.ErrTxDone
:
ErrTxDone is returned by any operation that is performed on a transaction that has already been committed or rolled back.
var ErrTxDone = errors.New("sql: transaction has already been committed or rolled back")
你应该怎么做?不要再使用交易了。如果您有进一步的任务,请在它之外或在另一个事务中执行。
如果您有应该在同一个事务中的任务,请在完成所有必须做的事情之前不要提交它。如果事务被回滚(例如,由于先前的错误),您别无选择,只能重试(使用另一个事务)或报告失败。
如果您已经在使用事务,请尝试将需要发生的所有事情都放在事务中。这就是交易的重点。要么应用其中的所有内容,要么都不应用。正确使用它们,您不必考虑清理它们。他们要么成功,你很高兴,要么他们不成功,你重试或报告错误,但你不必做任何清理。
关于mysql - 如何处理 sql.ErrTxDone,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57002228/