-1
我有一個問題,我似乎無法解決,可能是由於我沒有經驗與GO。我有以下代碼在一臺服務器上工作,但沒有在另一臺服務器上工作。下面是代碼:'無效的內存地址'錯誤與去-mssql
// Build out the connection string to the database, and then open the connection to the database.
connString := fmt.Sprintf("server=%s;user id=%s;password=%s;port=%d", *server, *user, *password, *port)
if *debug { fmt.Printf(" connString:%s\n", connString) }
db, err = sql.Open("mssql", connString)
if err != nil { log.Fatal("Open connection failed:", err.Error()) }
err = db.Ping()
if err != nil {
fmt.Println("Cannot connect: ", err.Error())
return
}
rows, _ := db.Query("SELECT Zip FROM Zip_Rural WHERE Zip = ?", ZipCode[0:5])
defer rows.Close()
if !rows.Next() {
acreageRequirement = .5
}
在讀取if !rows.Next()
我得到以下錯誤行:
panic: runtime error: invalid memory address or nil pointer dereference
panic: runtime error: invalid memory address or nil pointer dereference [signal 0xc0000005 code=0x0 addr=0x20 pc=0x477918]
此相同的代碼在另一臺服務器上就好了,在兩臺機器上運行的GO版本1.4.2 。我有一種感覺,我在這裏某處有一些不好的語法,但不知道真正的問題是什麼。在同一個文件內呼叫db.Exec
工作得很好,這使我相信我的數據庫連接完全正常,但由於某種原因db.Query
未正確執行。
謝謝,這就是我作爲一個noob得到的。我的用戶的默認數據庫不正確,因此.Query失敗,出現「表不存在」樣式錯誤。更改了登錄的默認數據庫,現在正在處理。謝謝 :)。 –