58 lines
1.1 KiB
Go
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)
|
|
}
|
|
}
|