使用Go訪問MySQL的方法

使用Go訪問MySQL的方法

安裝MySQL驅動

go get github.com/go-sql-driver/mysql

導入mysql包

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

鏈接數據庫

db, err := sql.Open("mysql", "user:password@tcp(127.0.0.1:3306)/dbname")
if err != nil {
    panic(err.Error())
}
defer db.Close()

err = db.Ping()
if err != nil {
    panic(err.Error())
}

查詢

age := 27
rows, err := db.Query("SELECT name FROM users WHERE age=?", age)
if err != nil {
    log.Fatalln(err)
}
defer rows.Close()

for rows.Next() {
    var name string
    if err := rows.Scan(&name); err != nil {
        log.Fatalln(err)
    }
    fmt.Printf("%s is %d\n", name, age)
}
if err := rows.Err(); err != nil {
    log.Fatalln(err)
}

問題

DATETIME轉換問題

執行Rows.Scan()時報告錯誤mysql

sql: Scan error on column index 1: unsupported Scan, storing driver.Value type []uint8 into type *time.Time

緣由是在調用sql.Open()時沒有將parseTime設置爲True。加入parseTime便可修復問題:git

db, err := sql.Open("mysql", "user:password@tcp(127.0.0.1:3306)/dbname?parseTime=true")

DATE、TIME、DATETIME等數據類型

  1. mysql彷佛不支持DATE和TIME數據類型,必須使用DATETIME類型。
  2. mysql彷佛不支持DATETIME值‘0000-00-00 00:00:00’。

參考資料

  1. https://github.com/go-sql-driver/mysql/

修訂記錄

  1. 2016年12月31日 創建文檔。
  2. 2017年05月22日 增長DATETIME類型轉換問題。
  3. 2017年06月17日 改成rst格式。
相關文章
相關標籤/搜索