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) } }