我正在使用SQLite和一个在后台运行的php应用程序。我已经使用(Ctrl-c)阻止了应用程序,我只是注意到我有database.sqlite和database.sqlite-journal。
目前,如何在不损害数据库的情况下删除-journal文件?
谢谢!
P.S。 SQLite版本3.7.9
修改
-rw-r--r--. 1 damiano damiano 51M 8 mar 18.15 test.sqlite2
-rw-r--r--. 1 damiano damiano 2,6K 8 mar 18.15 test.sqlite2-journal
[damiano@localhost backup]$ sqlite3 test.sqlite2
SQLite version 3.7.13 2012-06-11 02:05:22
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite>
[damiano@localhost backup]$ ls -lh
-rw-r--r--. 1 damiano damiano 51M 8 mar 18.15 test.sqlite2
-rw-r--r--. 1 damiano damiano 2,6K 8 mar 18.15 test.sqlite2-journal
[damiano@localhost backup]$
答案 0 :(得分:10)
执行以下命令:
sqlite3 test.sqlite2 vacuum
它将使您的数据库尽可能小,并在-journal
文件中应用可能的未完成事务或回滚(并在进程中将其删除)。你实际上可以执行任何其他做某事的事务(但只是连接/断开是不够的),但真空似乎是最简单的方法。
答案 1 :(得分:1)
只需打开数据库(使用您的程序或使用sqlite3
命令行工具)。
然后,SQLite将回滚已中断事务的更改,然后删除日志。