go goose 交易何时提交?

When are go goose transactions committed?

提问人:AthulMuralidhar 提问时间:3/27/2023 最后编辑:AthulMuralidhar 更新时间:3/27/2023 访问量:135

问:

  • 我有一些代码需要像这里一样运行Tx
  • 我生成了一个 go sql 迁移,如官方文档中提到的go goose

我的问题是:

  • 这些事务何时实际进入数据库?committed
  • 我强制使用 .这是我在 go 中的迁移文件:tx.Commit()
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
}

我无法在部分之后运行上述迁移,因为我在运行它们时获得了(源代码)。我仍然想多次运行 go 迁移(用于测试)。我该怎么做?我在这里做错了什么?downErrTxDoneUp00002

转到 SQL事务

评论


答:

1赞 AthulMuralidhar 3/27/2023 #1

因此,只需在这里浏览他们的文档即可发现提交已经在调用中发生 - 这是与事务 ofc 一起进行的,并由 - 相当不错的:)AddMigrationsgo goose

正如我们在这里看到的,sql 也是如此

pkg 还提供了选项,我们可以使用它来完全控制对象 - 太棒了!--no-transactiondb