发布于2026-07-13 阅读(0)
扫一扫,手机访问
在Debian上玩Golang,数据库操作是绕不开的话题。今天咱们就用MySQL来走一遍流程——从安装到写代码,把常用的增删查改捋清楚。整个过程不复杂,但细节上容易踩坑,咱们一个一个来拆解。

Debian上装MySQL很简单,两条命令搞定:
sudo apt-get update
sudo apt-get install mysql-server
装完之后,记得确认服务是否正常运行:
sudo systemctl status mysql
看到绿色active就对了。如果有防火墙,别忘了把3306端口放行,否则Golang连不上去。
Golang自带的database/sql包只是个接口,真正干活需要具体的驱动。MySQL这边最常用的是go-sql-driver/mysql,安装命令:
go get -u github.com/go-sql-driver/mysql
这一步完成后,项目里就能用import _ "github.com/go-sql-driver/mysql"来注册驱动了。
新建一个main.go,把下面的代码贴进去。关键地方我加了注释,重点看DSN字符串的写法——用户名、密码、数据库名必须换成你自己的,否则连不上。
package main
import (
"database/sql"
"fmt"
_ "github.com/go-sql-driver/mysql"
)
func main() {
// 连接数据库
dsn := "username:password@tcp(localhost:3306)/dbname?charset=utf8mb4&parseTime=True&loc=Local"
db, err := sql.Open("mysql", dsn)
if err != nil {
panic(err)
}
defer db.Close()
// 检查数据库连接
err = db.Ping()
if err != nil {
panic(err)
}
fmt.Println("Connected to the database!")
// 创建表
_, err = db.Exec("CREATE TABLE IF NOT EXISTS users (id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255), age INT)")
if err != nil {
panic(err)
}
fmt.Println("Table created!")
// 插入数据
_, err = db.Exec("INSERT INTO users (name, age) VALUES (?, ?)", "John Doe", 30)
if err != nil {
panic(err)
}
fmt.Println("Data inserted!")
// 查询数据
rows, err := db.Query("SELECT id, name, age FROM users")
if err != nil {
panic(err)
}
defer rows.Close()
for rows.Next() {
var id int
var name string
var age int
err = rows.Scan(&id, &name, &age)
if err != nil {
panic(err)
}
fmt.Printf("ID: %d, Name: %s, Age: %d\n", id, name, age)
}
// 检查查询过程中的错误
err = rows.Err()
if err != nil {
panic(err)
}
}
注意dsn里的username、password和dbname要替换成实际的MySQL数据库用户名、密码和数据库名称。另外parseTime=True这个参数很关键——如果数据库里有时间字段,不加它解析会出问题。
在项目目录下直接跑:
go run main.go
如果一切顺利,你会看到依次输出“Connected to the database!”、“Table created!”、“Data inserted!”以及查询出来的用户数据。整个过程走下来,Golang操作MySQL的基本套路就掌握了。
当然,这只是一个入门示例。实际项目中你还需要处理连接池配置、事务、错误处理等细节。不过骨架搭好了,剩下的就是往里面填业务逻辑了。
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
8