在 Linux 环境下使用 Golang 连接数据库,通常取决于你使用的是哪种数据库。下面以最常见的几种为例:MySQL、PostgreSQL、SQLite,并说明基本步骤。
go version
mkdir demo && cd demo
go mod init demo
go get -u github.com/go-sql-driver/mysql
package main
import (
"database/sql"
"fmt"
"log"
_ "github.com/go-sql-driver/mysql"
)
func main() {
dsn := "user:password@tcp(127.0.0.1:3306)/dbname"
db, err := sql.Open("mysql", dsn)
if err != nil {
log.Fatal(err)
}
defer db.Close()
if err = db.Ping(); err != nil {
log.Fatal(err)
}
fmt.Println("MySQL connected")
}
go get -u github.com/lib/pq
package main
import (
"database/sql"
"fmt"
"log"
_ "github.com/lib/pq"
)
func main() {
dsn := "host=localhost port=5432 user=postgres password=123456 dbname=test sslmode=disable"
db, err := sql.Open("postgres", dsn)
if err != nil {
log.Fatal(err)
}
defer db.Close()
if err = db.Ping(); err != nil {
log.Fatal(err)
}
fmt.Println("PostgreSQL connected")
}
go get -u github.com/mattn/go-sqlite3
package main
import (
"database/sql"
"fmt"
"log"
_ "github.com/mattn/go-sqlite3"
)
func main() {
db, err := sql.Open("sqlite3", "./test.db")
if err != nil {
log.Fatal(err)
}
defer db.Close()
fmt.Println("SQLite connected")
}
如果你不想手写 SQL,可以用:
go get -u gorm.io/gorm
go get -u gorm.io/driver/mysql
示例:
import (
"gorm.io/driver/mysql"
"gorm.io/gorm"
)
db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
连接被拒绝
时区错误(MySQL)
dsn := "user:pass@tcp(127.0.0.1:3306)/db?parseTime=true"
如果你告诉我:
我可以给你更精确的示例。