Создайте запрос с параметрами, которые являются массивом массивов байтов - PullRequest
0 голосов
/ 07 декабря 2018

У меня проблема с отправкой массива байтов вместе с моим запросом в SqlX.

Я приведу конкретный пример, рассмотрим следующее:

У меня есть эти хэши:

hash1 := []byte("84ce419844366f84de5352c257f06e356fe1ee4c4248e774c66cd44a7cf24c84f6492e988287db9fc3e540dac4efbd4813ce6f82afa9f552b1f5d46376dcac30")
hash2 := []byte("84ce419844366f84de5352c257f06e356fe1ee4c4248e774c66cd44a7cf24c84f6492e988287db9fc3e540dac4efbd4813ce6f82afa9f552b1f5d46376dcac30")
hash3 := []byte("84ce419844366f84de5352c257f06e356fe1ee4c4248e774c66cd44a7cf24c84f6492e988287db9fc3e540dac4efbd4813ce6f82afa9f552b1f5d46376dcac30")
hash4 := []byte("84ce419844366f84de5352c257f06e356fe1ee4c4248e774c66cd44a7cf24c84f6492e988287db9fc3e540dac4efbd4813ce6f82afa9f552b1f5d46376dcac30")

Хранится так:

hashes := [][]byte{}

hashes = append(txsHashes, txHash1)
hashes = append(txsHashes, txHash2)
hashes = append(txsHashes, txHash3)
hashes = append(txsHashes, txHash4)

Теперь я хочу удалить все строки, в которых их хэш находится в массиве хэшей.

Запрос:

    query := "DELETE SomeTable WHERE hash IN (?)"

Я создаю соединение с БД:

db  :=  &sqlx.DB{}
sqlDriverStr := "sqlite3"
dataSourcePath := "./mock.db"
sqlDriver, err := sql.Open(sqlDriverStr, dataSourcePath)
if err != nil {
    log.Fatal(err)
}

db = sqlx.NewDb(sqlDriver, sqlDriverStr)
err = db.Ping()
if err != nil {
    log.Fatal(err)
}

Выполнить запрос:

deleteQuery := "DELETE SomeTable WHERE hash IN (?)"
_, err = db.Exec(deleteQuery, txsHashes)
if err != nil {
    log.Fatal(err)
}

Возврат ошибки:

2018/12/07 00:57:59 sql: преобразование аргумента $ 1 тип: неподдерживаемый тип [] [] uint8, ломтик ломтика

Есть идеи, что я могу сделать?

Спасибо

...