Моя база данных составляет около 25 МБ, и я проверил, что имя пользователя, к которому она обращается, а также права доступа к файлам не менялись в течение нескольких месяцев. У меня возникла проблема, когда запросы не выполняются из-за «базы данных или диск заполнен», а затем иногда возникает проблема «Образ диска базы данных поврежден».
Если я не читаю это неправильно, мой диск почти не заполнен (это сервер Ubuntu, 9.10, если это что-то меняет)
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda1 19610300 2389596 16224560 13% /
udev 10240 128 10112 2% /dev
none 254136 0 254136 0% /dev/shm
none 254136 36 254100 1% /var/run
none 254136 0 254136 0% /var/lock
none 254136 0 254136 0% /lib/init/rw
В качестве теста я просто выполнил действие, которое добавило новую запись, и это нормально. Я пытаюсь выяснить, есть ли определенный набор действий, которые терпят неудачу. Однако после вставки (и проверки ее наличия) количество байтов на диске для базы данных не изменилось (ни вверх, ни вниз).
Использование утилиты командной строки приводит к чему-то похожему на следующее, что не дает впечатляющий эффект:)
SQLite version 3.6.12
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> pragma integrity_check;
*** in database main ***
On tree page 2 cell 0: 2nd reference to page 26416
On tree page 2 cell 1: 2nd reference to page 26417
On tree page 2 cell 2: 2nd reference to page 26434
On tree page 2 cell 3: 2nd reference to page 26449
On tree page 2 cell 4: 2nd reference to page 26464
On tree page 2 cell 5: 2nd reference to page 26358
On tree page 2 cell 6: 2nd reference to page 26494
On tree page 2 cell 7: Child page depth differs
On tree page 2 cell 8: 2nd reference to page 26190
On tree page 2 cell 8: Child page depth differs
... etc., etc. ...
Любые идеи о том, где я должен искать дальше? Есть ли проблема с максимальным количеством строк в таблице или чем-то? Я немного читал о максимальных значениях SQLite3, и, насколько я могу судить, в моей базе данных нет ничего похожего на них.
Затем я посмотрел на свои ежедневные резервные копии и вижу, что резервная копия базы данных не менялась в размере файла в течение 3-4 дней - очень странно. Я восстановил резервную копию базы данных до того, как она не изменилась в размере файла, и все еще получаю странные проблемы.
Я думаю, что мне придется (1) восстановить из более старой резервной копии и (2) перезапустить мои миграции Rails, чтобы исправить.