У меня проблема с отправкой массива байтов вместе с моим запросом в 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, ломтик ломтика
Есть идеи, что я могу сделать?
Спасибо