Go 里安装 MySQL 驱动用 github.com/go-sql-driver/mysql;需 go get 并在代码中 import _ "github.com/go-sql-driver/mysql",拼写错误或未导入会导致 unknown driver 错误。

Go 里安装 MySQL 驱动用哪个包?
Go 官方不提供数据库驱动,必须用第三方实现。github.com/go-sql-driver/mysql 是最主流、维护活跃的 MySQL 驱动,支持 database/sql 标准接口,无需额外抽象层。
安装命令就是:
go get github.com/go-sql-driver/mysql
注意:它**不是** go-sql-driver/mysql(少 github.com/ 就会报错),也**不是**旧版 github.com/Go-SQL-Driver/MySQL(大小写敏感,会拉不到包)。
常见错误现象:
立即学习“go语言免费学习笔记(深入)”;
-
cannot find package "github.com/go-sql-driver/mysql":GOPATH 或 Go Modules 未启用,或拼写错误 - 运行时报
sql: unknown driver "mysql" (forgotten import?):只执行了go get,但没在代码里import _ "github.com/go-sql-driver/mysql"
PostgreSQL 驱动怎么选?
推荐用 github.com/lib/pq —— 虽然已归档(archive),但仍是生产环境最稳定的选择;或者用更现代的 github.com/jackc/pgx/v5(支持原生 pg 协议,性能更好,但 API 不完全兼容 database/sql)。
如果只用标准 database/sql 接口,装 lib/pq:
go get github.com/lib/pq
如果要用 pgx 的高级特性(如连接池控制、类型映射、批量操作),且愿意接受非标准接口,装 v5:
Psky企业网站是基于PHP+MYSQL开发的一款企业官网宣传网站,支持PC、wap浏览。 主要功能包括导航管理、轮播新闻、单位动态、通知通报、单位简介、后台管理等。运行环境下载安装PHPStudy(小皮)即可。系统采用PHP语言(版本:7.3.4nts)和MYSQL(版本:5.7.26)数据库进行开发,安装PHPStudy(小皮)集成环境进行测试通过。安装步骤:1、导入SQL文件到PHPmyad
go get github.com/jackc/pgx/v5
关键区别:
-
lib/pq:导入后注册"postgres"驱动,和mysql一样走database/sql -
pgx:默认不注册驱动,需显式调用pgx.Connect();若硬要塞进sql.Open("pgx", ...),得额外引入github.com/jackc/pgx/v5/pgxpool并配好驱动注册
同一个项目里能同时用 MySQL 和 PostgreSQL 吗?
可以,但要注意驱动注册冲突和连接字符串格式差异。
两个驱动都必须显式导入(用 _ 空导入):
import (
_ "github.com/go-sql-driver/mysql"
_ "github.com/lib/pq"
)连接字符串格式完全不同:
- MySQL:
"user:password@tcp(127.0.0.1:3306)/dbname?parseTime=true" - PostgreSQL:
"host=localhost port=5432 user=me dbname=test sslmode=disable"(lib/pq)或"postgresql://me@localhost:5432/test?sslmode=disable"(pgx)
别把 MySQL 的 @tcp(...) 写进 PostgreSQL 连接串,或反过来用 sslmode 参数连 MySQL —— 会静默失败或报错如 dial tcp: lookup tcp on ...: no such host。
为什么 go get 后还连不上数据库?
安装驱动只是第一步。真正连上需要三件事同时成立:
- 驱动已正确
import _ "xxx"(不能只go get) - 连接字符串语法合法,且数据库服务正在运行、端口可访问(建议先用
mysql -h ...或psql -h ...手动验证) - 代码中调用了
db.Ping()检查连接,而不是只调sql.Open()(后者只初始化连接池,不真正拨号)
一个典型遗漏点:在 CI/容器环境里,数据库地址写成 127.0.0.1,但 Go 应用和 DB 不在同一网络命名空间,应改用服务名(如 mysql、postgres)或宿主机网关 IP。










