Потоки Qt и соединение QSQLDatabase по умолчанию (sqlite) - PullRequest
0 голосов
/ 30 мая 2018

Безопасно ли использовать соединение с базой данных по умолчанию из разных потоков?Например:

bool upSafe(const QString &mig_to, const QString &mig_from) const {
  if (!QSqlDatabase::database().transaction()) {
    qCCritical(hfCoreMT) << "Failed init database transaction";
    return false;
  }

  if (!up(mig_to, mig_from)) {
    QSqlDatabase::database().rollback();
    return false;
  }

  return QSqlDatabase::database().commit();
}

В функции up по умолчанию QSQLQuery создан и выполнен.Может быть, какие-то подсказки к правильному шаблону?

1 Ответ

0 голосов
/ 30 мая 2018

QSqlDatabase (которая представляет собой одно соединение с БД) не реентерабельна.Вы можете использовать соединение только из той ветки, в которой вы его создали.Если вам нужно выполнить запросы из другого потока, вам сначала нужно создать другое соединение из этого потока.

...