sql - Go 数据库连接器:go-sql-driver 工作正常,其他一切“未知驱动程序,忘记导入?”
问题描述
当我尝试以这种方式使用 database/sql 时,它会编译并工作:
import (
"database/sql"
_ "github.com/go-sql-driver/mysql"
)
但是,如果我尝试使用 postgres 特定的连接器,它甚至不会编译:
import(
"database/sql"
_ "github.com/lib/pq"
)
import(
"database/sql"
_ "github.com/jbarham/gopgsqldriver"
)
两者都因错误而失败
sql: unknown driver "mysql" (forgotten import?)
我已经完成了这两个包的获取,我真的不确定为什么它没有编译
解决方案
你在做什么
db, err := sql.Open("mysql",
稍后的?"github.com/lib/pq"
例如,当您导入时,它通过调用注册自己sql.Register
,然后在sql.Open
您的源代码中:
func Open(driverName, dataSourceName string) (*DB, error) {
driversMu.RLock()
driveri, ok := drivers[driverName]
driversMu.RUnlock()
if !ok {
return nil, fmt.Errorf("sql: unknown driver %q (forgotten import?)", driverName)
}
}
因此,由于您不再导入mysql
,您需要更改sql.Open
为使用pq
驱动程序(或您最终选择的任何一个)。
推荐阅读
- angular - 从 Angular 调用 Android 和 iOS 方法
- html - 溢出动画的表现:隐藏;
- azure - 当我使用 VS Code 部署 azure funtions 应用程序时,它不起作用。并显示“中央目录损坏”评论
- xml - XSL 合并修改和添加
- python - 使用python从外部恢复一个天蓝色数据库
- c++ - type_info 成员函数是如何工作的?
- java - 应用继承和代码重用的最佳方式
- php - 调度 laravel 队列时未定义的属性异常
- php - 在 laravel 中,有什么好的方法可以在对象数组中插入对象属性并删除请求中不必要的属性
- python - 如何在 CSV 字段中用空字符替换双引号内的双引号?