如何在GoLang上的不同处理程序上全局共享MySQL驱动程序

时间:2017-01-10 22:01:54

标签: mysql go

我想从不同的处理程序调用db,这是我的mysql.go: 包常见

private Map<Category, List<Attribute>> attributesMap=new HashMap<>();
private List<Attribute> attributesByCategory;
public void almacenarModulos(Categorycategory)
   {
     attributesMap.put(category,attributesByCategory);
   }

这是我想要做的,但我不知道我如何将db从普通包调用到另一个包中(我尝试使用common.db但它不起作用):

包装模型

import (
    "database/sql"
    "fmt"

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

var db *sql.DB
var err error

//db connection
func connectDB() {
    db, err = sql.Open("mysql", "root@tcp(localhost:3306)/mysqlapi")
    if err != nil {
        fmt.Println(err.Error())
    }
    defer db.Close()

    //test connection
    err = db.Ping()
    if err != nil {
        fmt.Println(err.Error())
    }

    //table migration
    stmt, err := db.Prepare("CREATE TABLE person (id int NOT NULL AUTO_INCREMENT, first_name varchar(40), last_name varchar(40), PRIMARY KEY (id));")
    if err != nil {
        fmt.Println(err.Error())
    }
    _, err = stmt.Exec()
    if err != nil {
        fmt.Println(err.Error())
    } else {
        fmt.Println("Person Table successfully migrated....")
    }

}

1 个答案:

答案 0 :(得分:0)

您需要像这样编写db var:

package common

import (
    "database/sql"
    "fmt"

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

var Db *sql.DB
var Err error

在Golang Capital中,意味着将其导出到包裹之外。您可以了解有关此问题的更多信息here