У меня есть 2 процесса, которые подключаются к одной и той же БД.Первый используется для чтения из БД, а второй - для записи в БД.Первый процесс отправляет процедуры записи для выполнения второму процессу через очередь сообщений в linux.
Каждый SQL-оператор берется в подпрограмме prepare, step, finalize;Там, где подготовка и этап выполняются в цикле 10000 раз, пока он не будет успешным (это было сделано для устранения проблем, связанных с БД).
Чтобы добавить таблицу, выполните следующую процедуру:
первый процесс отправляет запрос через msg-q второму процессу, чтобы добавить таблицу и вставить мусор в ее строки в режиме journal_mode = OFF.
, затем первый процесс проверяетдля существующей таблицы, чтобы она могла продолжить в своем алгоритме.(Он проверяет его в цикле с помощью команды usleep между итерациями.)
Проблема заключается в том, что второй процесс застревает в шаге выполнения 'PRAGMA journal_mode = OFF;'потому что он говорит, что БД заблокирована (здесь я также использую цикл из 10000 итераций с usleep, чтобы проверить 10000 раз для освобождения БД, как я упоминал ранее).
Когда я добавляю в первый процессв цикле «проверка существующей таблицы», операция закрытия соединения, второй процесс в порядке.Но теперь, когда я иногда добавляю таблицы и значения, я получаю «запрос на обратный вызов отменяется» в операторе шага.
Любая помощь в том, что здесь происходит?