文件 – SQLite3数据库或磁盘已满/数据库磁盘映像格式不正确

前端之家收集整理的这篇文章主要介绍了文件 – SQLite3数据库或磁盘已满/数据库磁盘映像格式不正确前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我的数据库大约是25 MB,我已经验证访问它的用户名以及文件权限在几个月内没有改变。我有一个问题,其中查询失败,由于“数据库或磁盘已满”,然后有时“数据库磁盘映像格式错误”的问题。

除非我读错了,我的磁盘不是接近满的(这是一个ubuntu服务器,9.10,如果它有什么区别)

  1. Filesystem 1K-blocks Used Available Use% Mounted on
  2. /dev/sda1 19610300 2389596 16224560 13% /
  3. udev 10240 128 10112 2% /dev
  4. none 254136 0 254136 0% /dev/shm
  5. none 254136 36 254100 1% /var/run
  6. none 254136 0 254136 0% /var/lock
  7. none 254136 0 254136 0% /lib/init/rw

作为一个测试,我只是做了一个动作,添加了一个新的记录,这是好的。我试图找出,如果有一组特定的行动是失败。然而,在插入(并且验证它在那里)数据库的磁盘上的字节数没有改变(既不向上也不向下)。

使用命令行实用程序导致类似以下,这是失败壮观:)

  1. sqlite version 3.6.12
  2. Enter ".help" for instructions
  3. Enter sql statements terminated with a ";"
  4. sqlite> pragma integrity_check;
  5. *** in database main ***
  6. On tree page 2 cell 0: 2nd reference to page 26416
  7. On tree page 2 cell 1: 2nd reference to page 26417
  8. On tree page 2 cell 2: 2nd reference to page 26434
  9. On tree page 2 cell 3: 2nd reference to page 26449
  10. On tree page 2 cell 4: 2nd reference to page 26464
  11. On tree page 2 cell 5: 2nd reference to page 26358
  12. On tree page 2 cell 6: 2nd reference to page 26494
  13. On tree page 2 cell 7: Child page depth differs
  14. On tree page 2 cell 8: 2nd reference to page 26190
  15. On tree page 2 cell 8: Child page depth differs
  16.  
  17. ... etc.,etc. ...

任何想法,我应该在下一步?有一个表中的最大行数或某事有问题吗?我对sqlite3的最大值做了一些阅读,我的数据库中没有什么是接近他们,只要我能告诉。

然后我看看我的每日备份,我看到数据库备份没有改变文件大小3-4天 – 很奇怪。我恢复了数据库的备份副本之前,它没有改变文件大小,仍然有奇怪的问题。

我想我必须(1)从较旧的备份还原,(2)重新运行我的Rails迁移修复。

需要考虑的几件事:

> sqlite3数据库文件大约是DB页面大小的倍数,除非使用VACUUM,否则不会收缩。如果删除某些行,则会在内部标记释放的空间,并在以后的插入中重复使用。因此,插入操作通常不会导致后台DB文件的大小发生变化。
>对于sqlite(或任何其他数据库),您不应使用传统备份工具,因为它们不考虑对确保数据库未损坏至关重要的数据库状态信息。特别是,在插入事务中复制DB文件是灾难的一种方法
> sqlite3有一个API专门用于备份或复制正在使用的数据库
>是的,它似乎是你的数据库文件corrupted.它可能是一个硬件/文件系统错误。或者你在使用时复制了他们?或者可能还原未正确采取的备份?

猜你在找的Sqlite相关文章