Files
2026-09-21 16:46:55 +08:00

58 lines
1.1 KiB
Go

package mysqlserver
import (
"database/sql"
"fmt"
"net"
"testing"
_ "github.com/go-sql-driver/mysql"
)
func TestGoSQLDriverCompat(t *testing.T) {
addr, _ := startServer(t, stubBackend{}, "root", "123456")
host, port, err := net.SplitHostPort(addr)
if err != nil {
t.Fatal(err)
}
dsn := fmt.Sprintf("root:123456@tcp(%s:%s)/app?timeout=5s&readTimeout=5s&writeTimeout=5s&charset=utf8mb4&parseTime=false", host, port)
db, err := sql.Open("mysql", dsn)
if err != nil {
t.Fatal(err)
}
defer db.Close()
db.SetMaxOpenConns(1)
var v string
if err := db.QueryRow("SELECT 1").Scan(&v); err != nil {
t.Fatal(err)
}
if v != "1" {
t.Fatalf("got %q", v)
}
var n sql.NullString
if err := db.QueryRow("SELECT NULL AS n").Scan(&n); err != nil {
t.Fatal(err)
}
if n.Valid {
t.Fatal("expected NULL")
}
var big string
if err := db.QueryRow("SELECT bigint_val").Scan(&big); err != nil {
t.Fatal(err)
}
if big != "18446744073709551615" {
t.Fatalf("bigint %q", big)
}
var zh string
if err := db.QueryRow("SELECT zh_val").Scan(&zh); err != nil {
t.Fatal(err)
}
if zh != "你好世界" {
t.Fatalf("zh %q", zh)
}
}