首页 > 解决方案 > golang-migrate Close() 不关闭连接

问题描述

我正在使用 golang-migrate 来迁移架构。连接打开,上下迁移工作正常。但是,数据库连接没有关闭,没有抛出任何错误并在数据库服务器中留下空闲连接。我的代码如下所示:

m, err := migrate.New(sourceURL, "database_connection_string")
defer m.Close()
m.Version()

有没有人遇到过类似的问题?我们如何解决这个问题?

原始代码

标签: godatabase-migrationgolang-migrate

解决方案


defer 语句将确保在您的方法返回后执行 m.Close() 调用,因此在方法中放置 m.Version() 调用的位置以及任何检查它是否从内部关闭的尝试都无关紧要方法将返回假阴性。

我没有遇到过这个问题,但根据您的经验,golang-migrate 中的 Close 和 Version 方法都是可疑的。但是,这是一个开源项目,因此在您的情况下,我会克隆他们的代码,从您的代码中调用它,然后调试这些方法以查看发生了什么。您可能会发现一些可以帮助您修复代码的见解,但也有可能在他们的代码中发现错误。


推荐阅读