我正在使用golang-migrate迁移架构。连接打开,向上和向下迁移都工作正常。但是,数据库连接不会关闭,不会引发任何错误并使数据库服务器中保持空闲连接。我的代码如下:
m, err := migrate.New(sourceURL, "database_connection_string")
defer m.Close()
m.Version()
有人遇到过类似的问题吗?我们该如何解决呢?
答案 0 :(得分:1)
defer语句将确保在方法返回后执行m.Close()调用,因此将m.Version()调用放置在方法中的位置以及任何尝试检查是否已关闭的尝试都无所谓从方法内部返回假阴性。
我还没有遇到这个问题,但是根据您的经验,golang-migrate中的Close和Version方法都是可疑的。但是,那是一个开源项目,因此在您的情况下,我将克隆他们的代码,从您的代码中调用它,然后调试这些方法以查看发生了什么。您可能会发现一些见解,可以帮助您修复代码,但也有可能在他们的代码中发现错误。