首页 > 后端开发 > Golang > 正文

go goose 事务什么时候提交?

王林
发布: 2024-02-08 21:54:20
转载
587 人浏览过

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
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!