小编jcm*_*ner的帖子

Golang依赖项在init()中注册sql驱动程序导致冲突

我有一些Go测试依赖于一些外部代码,这些代码具有注册mysql驱动程序的init()方法.我的代码也需要注册mysql驱动程序,因此我在运行测试时遇到了恐慌和错误"注册为驱动程序mysql调用了两次".

似乎我依赖的repo有一个vendor目录,里面有驱动程序("vendors/github.com/go-sql-driver/mysql").似乎当我运行我的测试时,驱动程序中的init()方法被调用并注册导致冲突的mysql驱动程序.

我能看到的最佳选择是将依赖项复制到我自己的供应商目录,并从依赖项的供应商目录中删除mysql驱动程序.但是我并不热衷于此,因为它涉及复制我的依赖关系,然后通过删除文件来修改它.另外,我只是依赖它来运行测试,所以我不确定我是否应该以任何方式将它移动到我的供应商目录.

有没有办法阻止在依赖项的供应商依赖项上调用init()?

go

6
推荐指数
1
解决办法
343
查看次数

标签 统计

go ×1