go 连接mysql 8.0

go 连接mysql 8.0,第1张

mysql8 为了提升安全性将默认的权限校验插件由mysql_native_password变更为caching_sha2_password,但是第三方链接库更新没有完全完成跟进。例如go在连接mysql8.0时会报错误“this authentication plugin is not supported”,根本原因在于go-sql-driver不支持新的校验方式。目前有三个解决方案:

go 链接mysql 8.0

Go语言 *** 作数据库非常的简单,

他也有一个类似JDBC的东西"database/sql"

实现类是"github.com/go-sql-driver/mysql"

使用过JDBC的人应该一看就懂

对日期的处理比较晦涩,没有JAVA流畅:

复制代码代码如下:

package main

import (

"database/sql"

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

"log"

"time"

)

/*

create table t(

id int primary key auto_increment,

name varchar(20) not null,

ts timestamp

)

*/

func insert(db *sql.DB) {

stmt, err := db.Prepare("insert into t(name,ts) values(?,?)")

defer stmt.Close()

if err != nil {

log.Println(err)

return

}

ts, _ := time.Parse("2006-01-02 15:04:05", "2014-08-28 15:04:00")

stmt.Exec("edmond", ts)

}

func main() {

db, err := sql.Open("mysql", "xx:xx@tcp(127.0.0.1:3306)/mvbox?charset=utf8")

if err != nil {

log.Fatalf("Open database error: %s\n", err)

}

defer db.Close()

err = db.Ping()

if err != nil {

log.Fatal(err)

}

session := engine.NewSession()defer session.Close()// add Begin() before any actionerr := session.Begin()user1 := Userinfo{Username: "xiaoxiao", Departname: "dev", Alias: "lunny", Created: time.Now()}_, err = session.Insert(&user1)if err != nil {session.Rollback()return}user2 := Userinfo{Username: "yyy"}_, err = session.Where("id = ?", 2).Update(&user2)if err != nil {session.Rollback()return} _, err = session.Exec("delete from userinfo where username = ?", user2.Username)if err != nil {session.Rollback()return} // add Commit() after all actionserr = session.Commit()if err != nil {return}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/7534307.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-06
下一篇 2023-04-06

发表评论

登录后才能评论

评论列表(0条)

保存