- Регистрация
- 11.05.2012
- Сообщения
- 432
- Благодарностей
- 139
- Баллы
- 43
Как настроить SQLite? Может кто сталкивался?
Суть вот в чем.
Поставил сначала сервер MySQL, с ним стало еще немерянно лишнего софта(я с этим пока не сталкивался вот и ставил все подряд), потом удалил, потом снова поставил и начались ошибки, ни в какую не удалялся mysql-connector и я плюнул на все это дело. Есть у меня конечно и хостинг с MySQL, но решил что локально было-бы надежней.
Обратил внимание на SQLite - никакого сервера, легкое подключение, простота в обращении, базу можно легко перенести(это просто файл) - и взялся за нее.
Написал шаблон на get запросах. Принцип прост - берется ID юзера(список .txt, повторов нет) - get запросом вытягиваем инфу и пишем в бд.
В бд около 11 колонок, 1 - ID(autoinkrement, unic), 2 - ID_user(unic), 3 - ID_login(unic), остальные неважно. В шаблоне настроен цикл на 50 проверок ID.
В один поток шаб работает отлично, все пишется.
А вот в 20 потоков полезли ошибки -
1) Сначала SQLite - ошибка записи в бд именно по ID_user (он должен быть уникальным, но каким-то образом появились дубли. Хотя в работе со списком стоит взятие с удалением) - костыль такой- сначала проверяю ID_user в бд (SELECT и проверка результата на !=''), если уже есть, беру следующий. Дублей стало значительно меньше, но все равно проскакивают.
2) Потом полезли ошибки при запросе SELECT - поставил паузу и повторный запрос к бд - то-же немного стало получше.
3) И окончательно добило - ошибка взятия из файла ID_user - там просто список чисел от 1 до 1000000 - почему - непойму?
Так вот о вопросе. В SQLite нет, как таковой, многопоточности на запись в бд, отсюда и ошибки записи.
Поискав решение этой проблемы Но с недавних пор появилась такая штука как WAL - https://sqlite.org/wal.html Вот только где что поменять чтоб включить? Можно еще как-то timeout задавать?
Суть вот в чем.
Поставил сначала сервер MySQL, с ним стало еще немерянно лишнего софта(я с этим пока не сталкивался вот и ставил все подряд), потом удалил, потом снова поставил и начались ошибки, ни в какую не удалялся mysql-connector и я плюнул на все это дело. Есть у меня конечно и хостинг с MySQL, но решил что локально было-бы надежней.
Обратил внимание на SQLite - никакого сервера, легкое подключение, простота в обращении, базу можно легко перенести(это просто файл) - и взялся за нее.
Написал шаблон на get запросах. Принцип прост - берется ID юзера(список .txt, повторов нет) - get запросом вытягиваем инфу и пишем в бд.
В бд около 11 колонок, 1 - ID(autoinkrement, unic), 2 - ID_user(unic), 3 - ID_login(unic), остальные неважно. В шаблоне настроен цикл на 50 проверок ID.
В один поток шаб работает отлично, все пишется.
А вот в 20 потоков полезли ошибки -
1) Сначала SQLite - ошибка записи в бд именно по ID_user (он должен быть уникальным, но каким-то образом появились дубли. Хотя в работе со списком стоит взятие с удалением) - костыль такой- сначала проверяю ID_user в бд (SELECT и проверка результата на !=''), если уже есть, беру следующий. Дублей стало значительно меньше, но все равно проскакивают.
2) Потом полезли ошибки при запросе SELECT - поставил паузу и повторный запрос к бд - то-же немного стало получше.
3) И окончательно добило - ошибка взятия из файла ID_user - там просто список чисел от 1 до 1000000 - почему - непойму?
Так вот о вопросе. В SQLite нет, как таковой, многопоточности на запись в бд, отсюда и ошибки записи.
Поискав решение этой проблемы Но с недавних пор появилась такая штука как WAL - https://sqlite.org/wal.html Вот только где что поменять чтоб включить? Можно еще как-то timeout задавать?