从MySQL client使用引出的bug聊起

版权声明 本站原创文章 由 萌叔 发表 转载请注明 萌叔 | http://vearne.cc 1.引子 前几天一个同事在MySQL实例上执行一些数据处理,程序大致如下: modify1.go package main import ( "context" "database/sql" "fmt" _ "github.com/go-sql-driver/mysql" "log" "time" ) func main() { db, err := sql.Open("mysql", "testdb_user:12345678@tcp(192.168.2.100:25037)/testdb?charset=utf8&loc=Asia%2FShanghai&parseTime=true") if err != nil { fmt.Println("===0===", err) } defer db.Close() tx, err := db.Begin() if err != nil { fmt.Println("===0===", err) } // 第1个SQL rows, err := tx.QueryContext(context.Background(), "select mtime, money from test where money > ?", 1) if err != nil { log.Fatal(err) } defer rows.Close() // 迭代查询结果 for rows.Next() { var mtime time.Time var money int if err := rows.Scan(&mtime, &money); err != nil { // Check for a scan error. // Query rows will be closed with defer. log.Fatal(err) } log.Println(mtime, money) // 第2个SQL result, err := tx.ExecContext(context.Background(), "insert into test2(`mtime`, `money`) values (?, ?)", mtime, money) if err != nil { log.Fatal(err) } rowsAffected, _ := result.RowsAffected() lastInsertIdresult, _ := result.LastInsertId() log.Println(rowsAffected, lastInsertIdresult) } tx.Commit() } 报错信息如下: ...

June 18, 2023 · 3 min