未选择Golang MySQL数据库

Mar*_*ark 2 mysql database go

我正在使用github.com/go-sql-driver/mysql软件包连接到MySQL。效果很好,除了选择数据库(USE)时,无法对其执行查询。

package main

import (
    "database/sql"
    "fmt"
    "log"
)

import _ "github.com/go-sql-driver/mysql"

func main() {
    dsn := "root:@/"
    db, err := sql.Open("mysql", dsn)
    if err != nil {
        fmt.Println("Failed to prepare connection to database. DSN:", dsn)
        log.Fatal("Error:", err.Error())
    }

    err = db.Ping()
    if err != nil {
        fmt.Println("Failed to establish connection to database. DSN:", dsn)
        log.Fatal("Error:", err.Error())
    }

    _, err = db.Query("USE test")
    if err != nil {
        fmt.Println("Failed to change database.")
        log.Fatal("Error:", err.Error())
    }

    _, err = db.Query("SHOW TABLES")
    if err != nil {
        fmt.Println("Failed to execute query.")
        log.Fatal("Error:", err.Error())
    }
}
Run Code Online (Sandbox Code Playgroud)

程序产生以下输出:

Error 1046: No database selected

Jan*_*ann 5

直接在sql.Open函数的DSN(数据源名称)部分中指定数据库:

dsn := "user:password@/dbname"
db, err := sql.Open("mysql", dsn)
Run Code Online (Sandbox Code Playgroud)

  • 虽然这行得通,但我不得不问为什么我需要这样做?如果以后需要更改数据库怎么办?我是否只需要关闭并打开新连接? (6认同)