初始化连接到数据库时在 SQLX 中未定义 'err'
Undefined 'err' in SQLX when initializing connecting to a database
我是 Go 语言的新手,正在尝试连接到服务器并在 API 调用时创建数据库。
但我在 sqlx.Connect
收到 "undefined:err"。起初我以为是因为我没有定义db *sqlx.DB
。但它仍然在 db, err = sqlx.Connect("mysql", connection)
.
处出错
是否需要定义一个var err
?
func (setupController *SetupController) Setup(w http.ResponseWriter, r *http.Request) {
var db *sqlx.DB
var connection string
response := new(Response)
response.Host = r.FormValue("host")
response.Port = r.FormValue("port")
response.Dbuser = r.FormValue("dbuser")
response.Dbpassword = r.FormValue("dbpassword")
response.Dbname = r.FormValue("dbname")
response.Username = r.FormValue("username")
response.Password = r.FormValue("password")
connection = response.Dbuser + ":" + response.Dbpassword + "@tcp(" + response.Host + ":" + response.Port + ")/" + response.Dbname
db, err = sqlx.Connect("mysql", connection)
userJson, err := json.Marshal(response)
if err != nil {
panic(err)
}
w.Header().Set("Content-Type", "application/json")
w.WriteHeader(http.StatusOK)
w.Write(userJson)
}
谢谢!
这是非常基础的 Go。你应该去参观。特别要看看 https://tour.golang.org/basics/10。并不是说在 Go 中你必须注意 =
和 :=
.
之间的细微差别
但简而言之,您在声明之前使用 err
。您可以先声明它:
var err error
或使用简短声明
db, err := sqlx.Connect("mysql", connection)
也许最简单的方法是将下面这行(确实做了简短的声明)移到它之前,否则当它被声明两次时你会得到另一个错误。你可能还应该检查错误。
userJson, err := json.Marshal(response)
if err != nil {
panic(err)
}
db, err = sqlx.Connect("mysql", connection)
if err != nil {
panic(err)
}
但是,除了这个语法错误之外,我还发现了其他问题。
我是 Go 语言的新手,正在尝试连接到服务器并在 API 调用时创建数据库。
但我在 sqlx.Connect
收到 "undefined:err"。起初我以为是因为我没有定义db *sqlx.DB
。但它仍然在 db, err = sqlx.Connect("mysql", connection)
.
是否需要定义一个var err
?
func (setupController *SetupController) Setup(w http.ResponseWriter, r *http.Request) {
var db *sqlx.DB
var connection string
response := new(Response)
response.Host = r.FormValue("host")
response.Port = r.FormValue("port")
response.Dbuser = r.FormValue("dbuser")
response.Dbpassword = r.FormValue("dbpassword")
response.Dbname = r.FormValue("dbname")
response.Username = r.FormValue("username")
response.Password = r.FormValue("password")
connection = response.Dbuser + ":" + response.Dbpassword + "@tcp(" + response.Host + ":" + response.Port + ")/" + response.Dbname
db, err = sqlx.Connect("mysql", connection)
userJson, err := json.Marshal(response)
if err != nil {
panic(err)
}
w.Header().Set("Content-Type", "application/json")
w.WriteHeader(http.StatusOK)
w.Write(userJson)
}
谢谢!
这是非常基础的 Go。你应该去参观。特别要看看 https://tour.golang.org/basics/10。并不是说在 Go 中你必须注意 =
和 :=
.
但简而言之,您在声明之前使用 err
。您可以先声明它:
var err error
或使用简短声明
db, err := sqlx.Connect("mysql", connection)
也许最简单的方法是将下面这行(确实做了简短的声明)移到它之前,否则当它被声明两次时你会得到另一个错误。你可能还应该检查错误。
userJson, err := json.Marshal(response)
if err != nil {
panic(err)
}
db, err = sqlx.Connect("mysql", connection)
if err != nil {
panic(err)
}
但是,除了这个语法错误之外,我还发现了其他问题。