{
stmt1, err := db.Prepare(`UPDATE keys SET allQueries = allQueries + ? WHERE key = ?;`)
if err != nil {
log.Panic(err)
}
defer stmt1.Close()
stmt2, err := db.Prepare(`SELECT queriesPerMin, key FROM keys;`)
if err != nil {
log.Panic(err)
}
defer stmt2.Close()
var qCount config.Queries
var qCountArr []config.Queries
for {
rows, err := stmt2.Query()
if err != nil {
log.Panic(err)
}
for rows.Next() {
err = rows.Scan(&qCount.QCountsPerTime, &qCount.ApiKey)
if err != nil {
log.Panic(err)
}
mx.Lock()
_, err = stmt1.Exec((*allApiKeyUsing)[qCount.ApiKey], qCount.ApiKey)
if err != nil {
log.Panic(err)
}
(*allApiKeyUsing)[qCount.ApiKey] = 0
mx.Unlock()
qCountArr = append(qCountArr, qCount)
}
rows.Close()
myLogger.QueriesPerTime(qCountArr)
time.Sleep(timeout)
}
}
Паника на строке:
_, err = stmt1.Exec((*allApiKeyUsing)[qCount.ApiKey], qCount.ApiKey)
if err != nil {
log.Panic(err)
}
Сообщает, что database is locked. В чем может быть проблема ?
что говорит паника?
panic: database is locked
у вас опять это в два запроса, в вашем случе можно сделать один на update и один на получение результата
Так это же тоже два запроса будет
запрос - это вызовы Exec
Обсуждают сегодня