php小编鱼仔在这里为大家解答一个常见的问题:"go goose 事务什么时候提交?"在 Go 语言中,事务的提交取决于具体的数据库驱动。一般而言,当执行事务提交的操作时,数据库会将当前事务的所有修改操作一次性提交到数据库中。这样可以确保事务的原子性,即要么全部提交成功,要么全部回滚失败。因此,事务的提交时机是在执行事务提交操作的时候,而不是在事务的开始或结束时。具体的使用方法可以参考相关的数据库驱动文档。
tx
中运行,如下所示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也是如此,正如我们所看到的
以上是go goose 事务什么时候提交?的详细内容。更多信息请关注PHP中文网其他相关文章!