go - golang-migrate Close() 不关闭连接
问题描述
我正在使用 golang-migrate 来迁移架构。连接打开,上下迁移工作正常。但是,数据库连接没有关闭,没有抛出任何错误并在数据库服务器中留下空闲连接。我的代码如下所示:
m, err := migrate.New(sourceURL, "database_connection_string")
defer m.Close()
m.Version()
有没有人遇到过类似的问题?我们如何解决这个问题?
解决方案
defer 语句将确保在您的方法返回后执行 m.Close() 调用,因此在方法中放置 m.Version() 调用的位置以及任何检查它是否从内部关闭的尝试都无关紧要方法将返回假阴性。
我没有遇到过这个问题,但根据您的经验,golang-migrate 中的 Close 和 Version 方法都是可疑的。但是,这是一个开源项目,因此在您的情况下,我会克隆他们的代码,从您的代码中调用它,然后调试这些方法以查看发生了什么。您可能会发现一些可以帮助您修复代码的见解,但也有可能在他们的代码中发现错误。
推荐阅读
- python - seaborn 热图的数据准备
- sage - sage中获取有向图的关联矩阵时如何指定顶点顺序和边顺序?
- html - 如何为 2 个媒体查询提供 2 种不同的样式,同时它们的最大宽度相同但 1 具有最大高度
- mips - 无需转换指令即可将浮点数转换为整数
- python - 如何在Django Rest Framework的manytomanyfield中获取序列化程序中的键值?
- java - 从字符数组中获取整数?
- suitescript - SuiteScript - 子列表“刷新按钮”
- azure-devops - 使用 REST API 访问 Azure Dev Ops/VSTS 工件中的文件内容
- java - `Random.ints(origin, bound)`、`.longs(origin, bound)`等的API是否缺少功能?
- python - Python数轴集群练习