应使用 go-sql-driver/mysql 驱动,执行 go get -u github.com/go-sql-driver/mysql;dsn 需 url 编码,含 parsetime=true 和 loc=local;sql.open() 后须调用 db.ping() 验证连接,并合理配置连接池。
安装 MySQL 驱动:用 go-sql-driver/mysql 而不是 mysql
Go 官方没有内置 MySQL 驱动,必须手动引入第三方驱动。最常用、维护最活跃的是 go-sql-driver/mysql。别被名字误导——它不叫 mysql,直接 go get mysql 会失败或装错包。
正确命令是:
go get -u github.com/go-sql-driver/mysql
注意:Go 1.21+ 默认启用 Go Module,无需额外初始化;若项目无 go.mod,先运行 go mod init your-project-name。
- 不要用已归档的
github.com/ziutek/mymysql或过时的database/mysql(不存在) - 如果遇到
cannot find package "database/sql",说明 Go 环境异常,检查GOROOT和GOPATH是否污染 - 该驱动纯 Go 实现,无需 C 编译器,Windows/macOS/Linux 均可直接用
配置 DSN:用户名、密码、地址不能裸写,要 URL 编码
连接字符串(DSN)格式为:user:password@tcp(127.0.0.1:3306)/dbname?charset=utf8mb4&parseTime=True&loc=Local。其中 & 是 URL 查询参数分隔符,必须用 &(HTML 实体),不能写成 &,否则解析失败。
常见坑点: