SQL Lite теряет записи в базе данных - PullRequest
0 голосов
/ 17 марта 2019

У меня есть некоторый Java-код, над которым я работаю, и у меня возникла странная проблема.

У меня есть одна главная таблица, которая использует rowid в качестве первичного ключа и содержит запись. Эта запись вставляется, а затем обновляется по мере необходимости. Это все отлично работает.

У меня есть три другие таблицы, в которых хранятся данные, относящиеся к первой таблице, и на которые ссылается rowid в первой таблице.

Моя проблема в том, что когда пришло время обновить данные в других таблицах, я обычно удаляю все записи, связанные с первичным идентификатором, а затем вставляю их заново.

Однако при этом, кажется, не всегда вставляются записи? хотя данные определенно отправляются в драйвер sqlite. Проблема также непоследовательна, иногда она добавляет все записи в цикле, иногда добавляет две, и, наконец, иногда не добавляет ни одной ... Это связано со мной, удаляя записи и вставляя их заново? (на самом деле не имеет смысла) ... или что-то еще полностью?

С учетом следующего запроса:

16.03 21:32:43 [Server] INFO [Database] Query Was: DELETE FROM faction_members WHERE faction_id='1'; 
16.03 21:32:43 [Server] INFO [Database] Query Was: INSERT INTO faction_members VALUES('1','0f448831-477e-3e62-87aa-bbbdbb2d28ed','0');

Тогда вторая таблица данных:

16.03 21:32:43 [Server] INFO [Database] Query Was: DELETE FROM faction_ranks WHERE faction_id='1'; 
16.03 21:32:43 [Server] INFO [Database] Query Was: INSERT INTO faction_ranks VALUES('1','0','Leader'); 
16.03 21:32:43 [Server] INFO [Database] Query Was: INSERT INTO faction_ranks VALUES('1','1','General'); 
16.03 21:32:43 [Server] INFO [Database] Query Was: INSERT INTO faction_ranks VALUES('1','2','Officer'); 
16.03 21:32:43 [Server] INFO [Database] Query Was: INSERT INTO faction_ranks VALUES('1','3','Member'); 
16.03 21:32:43 [Server] INFO [Database] Query Was: INSERT INTO faction_ranks VALUES('1','4','Recruit');

Результат, который записывается в базу данных:

sqlite> select * from faction_members; <-no results
sqlite> select * from faction_ranks;
1|0|Leader
1|1|General
1|2|Officer
sqlite>

Есть предположения? Кажется, я не сталкиваюсь с этой проблемой, используя подход вставки / обновления, но когда я удаляю записи, то вставляю новые строки, которые не делают это надежно в таблицу.

Об ошибках не сообщается

1 Ответ

0 голосов
/ 17 марта 2019

Хммммм ... Возможно, я только что понял это.

Удаление / вставка выполнялись в другом потоке, поэтому я предполагаю, что вполне возможно, что, хотя я и раньше вызывал команду удаления, это не былоВы на самом деле запускаете сначала и, возможно, в середине цикла вставки?

Запрещена запись в отдельные потоки в моем коде, и теперь все данные, по-видимому, находятся в базе данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...