首页 >后端开发 >Golang >go goose 事务什么时候提交?

go goose 事务什么时候提交?

王林
王林转载
2024-02-08 21:54:20639浏览

go goose 事务什么时候提交?

php小编鱼仔在这里为大家解答一个常见的问题:"go goose 事务什么时候提交?"在 Go 语言中,事务的提交取决于具体的数据库驱动。一般而言,当执行事务提交的操作时,数据库会将当前事务的所有修改操作一次性提交到数据库中。这样可以确保事务的原子性,即要么全部提交成功,要么全部回滚失败。因此,事务的提交时机是在执行事务提交操作的时候,而不是在事务的开始或结束时。具体的使用方法可以参考相关的数据库驱动文档。

问题内容

  • 我有一些代码需要在 tx 中运行,如下所示
  • 我生成了一个 go sql 迁移,如 go goose 的官方文档中所述

我的问题是:

  • 这些事务什么时候真正被 commited 到数据库?
  • 我强制使用 tx.commit() 提交迁移。这是我在 go 中的迁移文件:
func Up00002(tx *sql.Tx) error {
    _, err := tx.Exec("UPDATE users SET username='admin' WHERE username='root';")
    if err != nil {
        return err
    }

    if err = tx.Commit(); err != nil {
        return fmt.Errorf("error during committing the transaction: %w", err)
    }


    return nil
}

我无法在 down 部分之后运行上述迁移,因为当我运行它们时,我得到了 errtxdone (源)。我仍然想多次运行 go 迁移 up00002 (用于测试)。我怎样才能做到这一点?我在这里做错了什么?down 部分之后运行上述迁移,因为当我运行它们时,我得到了 errtxdone (源)。我仍然想多次运行 go 迁移 up00002 (用于测试)。我怎样才能做到这一点?我在这里做错了什么?

解决方法

因此,只需浏览他们的文档此处即可显示提交已经在 AddMigrations 调用中发生 - 这是使用 ofc 事务,由 go goose

解决方法

因此,只需浏览他们的文档此处即可显示提交已经在 AddMigrations 调用中发生 - 这是使用 ofc 事务,由

内部处理 - 非常好:)

--no-transaction选项,我们可以使用它来完全控制db对于sql也是如此,正如我们所看到的

这里🎜🎜 🎜pkg还提供了🎜对象 - 太棒了!🎜

以上是go goose 事务什么时候提交?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文转载于:stackoverflow.com。如有侵权,请联系admin@php.cn删除