我的数据库大约有25MB,我已经验证了访问它的用户名和文件权限在几个月内没有变化。我遇到了一个问题,查询失败是由于“数据库或磁盘已满”,然后有时“数据库磁盘映像是畸形”的问题。
除非我读错了,否则我的磁盘根本就没有满(这是一个 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 max 值的文章,目前为止,我的数据库中没有任何值接近它们。
然后我看了一下我的日常备份,我发现数据库备份在3-4天内没有改变文件大小——非常奇怪。我恢复了数据库的一个备份副本,在它没有改变文件大小之前,仍然会出现奇怪的问题。
我认为我将不得不(1)从一个旧的备份中恢复,(2)重新运行我的 Rails 迁移来修复。