1 回答

TA貢獻1805條經驗 獲得超10個贊
您的數據庫中的 id / 主鍵字段被調用"idtemperatures"并"id"在您的 SQL 語句中使用。
此外,由于您不是在執行查詢(而是INSERT),因此您應該使用DB.Exec()方法來執行它。您永遠不應該使用DB.Query() 來執行 DML(數據操作語言)語句。
如果您無法連接到您的數據庫,您可能會收到超時錯誤。確保它使用默認協議 (TCP) 和主機 (localhost:3306)。另一個原因可能是因為您曾經DB.Query()執行過 SQLINSERT語句,并DB.Query()返回一個*sql.Rows保存數據庫連接的值,直到您使用該Rows.Close()方法關閉它——而您從未這樣做過;你甚至沒有存儲返回的db.Rows值。
此外,您應該db.Close()在打開它后進行錯誤檢查后立即調用作為延遲語句。
更正的例子:
db, err := sql.Open("mysql", "user:pass@/sysStats")
if err != nil {
fmt.Println("Failed to open DB:", err)
return
}
defer db.Close()
s := "INSERT INTO temperatures (idtemperatures, cpu, gpu, timestamp) VALUES (?, ?, ?, ?)"
res, err = db.Exec(s, 1, temp_gpu, temp_cpu, time.Now())
if err != nil {
fmt.Println("Failed to execute INSERT:", err)
} else {
n, err := res.RowsAffected()
fmt.Println("INSERT executed, rows affected: ", n, err)
}
- 1 回答
- 0 關注
- 334 瀏覽
添加回答
舉報