Tôi đang sử dụng trình điều khiển MySQL cho Golang cung cấp ở đâykết nối cơ sở dữ liệu lưu trữ trong một biến toàn cầu
https://github.com/go-sql-driver/mysql
Một trong những điều tôi đang cố gắng để làm là lưu trữ các biến cơ sở dữ liệu trong một kết nối toàn cầu. Theo tài liệu, sql.Open() có nghĩa vụ phải trả về một con trỏ đến một cấu trúc DB, vì vậy tôi cố gắng lưu giữ nó như
var db *DB
Tuy nhiên, dẫn đến các lỗi
undefined: DB
Tiếp theo điều tôi cố gắng là để nhìn vào mã nguồn của trình điều khiển MySQL, và tôi thấy một đoạn mã ở đây https://github.com/go-sql-driver/mysql/blob/master/driver.go
func (d MySQLDriver) Open(dsn string) (driver.Conn, error) {
vì vậy, tôi đã cố gắng để lưu các biến như driver.Conn - tuy nhiên, tôi không thể (nhập sai). Tôi cũng không thể nhập trình điều khiển.
Điều cuối cùng tôi đã cố gắng là sử dụng phản ánh mang tên của biến ánh sáng
package main
import (
"fmt"
"reflect"
)
import "database/sql"
import _ "github.com/go-sql-driver/mysql"
func main() {
db, _ := sql.Open("mysql", "root:[email protected]/Tracker")
yt := reflect.TypeOf(db).Kind()
fmt.Printf("%T: %s\n", yt, yt)
}
Thật không may, điều đó không làm việc, hoặc - nó xuất hiện như con trỏ, và không phải là loại biến nó thực sự trỏ đến.
Tôi không biết cách tìm hiểu ngay bây giờ. Cảm ơn trước sự giúp đỡ của bạn!
+1 cho câu trả lời. Nên khai báo err riêng biệt hoặc biến db khác sẽ đến địa phương khác chức năng mà cố gắng sử dụng kết nối db sẽ nhận được "hoảng sợ: thời gian chạy lỗi: không hợp lệ bộ nhớ địa chỉ hoặc nil con trỏ dereference" lỗi – Ryan