亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

數據庫/sql Exec() 函數因連接字符串而失敗

數據庫/sql Exec() 函數因連接字符串而失敗

Go
函數式編程 2023-08-14 16:15:35
今天在Postgres使用database/sql驅動程序操作數據時發生了一個奇怪的錯誤github.com/lib/pq。我在 中創建了以下 SQL 架構Postgres:CREATE TABLE IF NOT EXISTS bench_bytea (    id INT PRIMARY KEY,    name VARCHAR,    data BYTEA);一個非?;镜谋?,包含類型為 的數據 blob BYTEA。然后我嘗試使用提供的函數執行簡單的INSERT語句。這里是:Exec()database/sqlpsqlInfo := fmt.Sprintf("host=%s port=%d user=%s "+    "password=%s dbname=%s sslmode=disable",    host, port, user, password, dbname)db, err := sql.Open("postgres", psqlInfo)if err != nil {    panic(err)}defer db.Close()stmt := `INSERT INTO bench_bytea (id, name, data) VALUES ($1, $2, $3) ON CONFLICT (id) DO NOTHING`data := `{"title": "Sleeping Beauties", "genres": ["Fiction", "Thriller", "Horror"], "published": false}`i := 0_, err = db.Exec(stmt, i, "testing "+string(i), []byte(data))if err != nil {    panic(err)}關鍵的亮點發生在db.Exec()我執行 SQL INSERT 語句的行上(實際上i是一個數組的索引,我在其中存儲了不同的測試data。我不想在這里包含其他數據,因為它真的很長并且不相關)。我收到的錯誤是:pq: invalid byte sequence for encoding "UTF8": 0x00現在,如果我更改"testing "+string(i)為"testing",錯誤就消失了。也就是說,如果我沒有在name列中插入連接字符串,則不會出現錯誤。這里發生了什么?
查看完整描述

1 回答

?
茅侃侃

TA貢獻1842條經驗 獲得超21個贊

您無法將整數轉換為這樣的字符串。的結果string(0)"\x00",又名空字節,而不是"0"您可能想要的。您應該改為使用strconv.Itoa轉換。



查看完整回答
反對 回復 2023-08-14
  • 1 回答
  • 0 關注
  • 138 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號