【问题标题】:Performing an SQL "dry run" (from Go application)执行 SQL “试运行”(来自 Go 应用程序)
【发布时间】:2019-03-20 04:58:59
【问题描述】:

我在 Go 中有一个从 YAML 文件生成 SQL 脚本的工具。为了将生成的脚本失败的风险降到最低,我想通过 SQL 或 Go 应用程序进行类似“试运行”之类的操作。

我的第一个想法是使用 ROLLBACK 语句,但随后生成的脚本还将包含回滚而不是提交。

SQL 或 Go 是否提供类似的功能?

【问题讨论】:

  • 不确定 mariadb 和 mysql,但是当使用带有 lib/pq 驱动程序的 postgres 时,您可以从查询字符串创建准备好的语句,如果查询包含无效的 sql,或者即使它有效但您指定不存在的表/列Prepare 将返回错误。请注意,如果您选择走这条路线,请确保关闭每个准备好的语句,如果您不打算以后重用。

标签: mysql go mariadb


【解决方案1】:

您是否考虑过在*DB.Conn 提供的事务内运行“试运行”语句?

db, err = sql.Open(...)

txn, err = db.BeginTx(...)
defer txn.Rollback

rows, err = txn.Query(...)

【讨论】:

  • 好点。这样我也可以在我的 IDE 中使用数据源。如果语句完成,我可以将其写入文件。
猜你喜欢
  • 1970-01-01
  • 2019-04-08
  • 1970-01-01
  • 2019-11-19
  • 1970-01-01
  • 2015-12-10
  • 1970-01-01
  • 2011-02-05
  • 1970-01-01
相关资源
最近更新 更多