我的项目需要导入两个包,而每一个注册mysql驱动程序,我得到了
与panic: sql: Register called twice for driver mysql
恐慌
如何解决这个问题
答案 0 :(得分:1)
您需要以某种方式重新构建项目,以便您不会在同一过程中导入两个驱动程序。
通常,实现SQL驱动程序的软件包会有一个" init()"他们会做以下事情的功能:
sql.Register("mysql", &MySQLDriver{})
参见例如: https://github.com/go-sql-driver/mysql/blob/master/driver.go#L182
但是如果相同的驱动程序名称按文档中的说明注册了两次,则Register函数将抛出错误: https://golang.org/pkg/database/sql/#Register
原因是你尝试这样做才能真正使用驱动程序:
db, err := sql.Open("mysql", someDBUrl)
那么,如果sql库允许你用同一个名字注册多个驱动程序,那么它应该如何确定要使用的驱动程序呢?