我的数据库大约是25 MB,我已经验证访问它的用户名以及文件权限在几个月内没有改变。我有一个问题,其中查询失败,由于“数据库或磁盘已满”,然后有时“数据库磁盘映像格式错误”的问题。
除非我读错了,我的磁盘不是接近满的(这是一个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迁移修复。
需要考虑的几件事:
原文链接:https://www.f2er.com/sqlite/198141.html> sqlite3数据库文件大约是DB页面大小的倍数,除非使用VACUUM,否则不会收缩。如果删除某些行,则会在内部标记释放的空间,并在以后的插入中重复使用。因此,插入操作通常不会导致后台DB文件的大小发生变化。
>对于sqlite(或任何其他数据库),您不应使用传统备份工具,因为它们不考虑对确保数据库未损坏至关重要的数据库状态信息。特别是,在插入事务中复制DB文件是灾难的一种方法…
> sqlite3有一个API专门用于备份或复制正在使用的数据库。
>是的,它似乎是你的数据库文件是corrupted.它可能是一个硬件/文件系统错误。或者你在使用时复制了他们?或者可能还原未正确采取的备份?