Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何在不影响数据库的情况下删除日志文件?_Sql_Sqlite - Fatal编程技术网

Sql 如何在不影响数据库的情况下删除日志文件?

Sql 如何在不影响数据库的情况下删除日志文件?,sql,sqlite,Sql,Sqlite,我正在使用SQLite和一个在后台运行的php应用程序。我已经使用(Ctrl-c)阻止了应用程序,我刚刚注意到我有database.sqlite和database.sqlite-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

我正在使用SQLite和一个在后台运行的php应用程序。我已经使用(Ctrl-c)阻止了应用程序,我刚刚注意到我有database.sqlite和database.sqlite-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]$ 
只需打开数据库(使用您的程序或
sqlite3
命令行工具)。 SQLite随后将回滚中断事务的更改,然后删除日志。

执行以下命令:

sqlite3 test.sqlite2 vacuum

它将使您的数据库尽可能小,并在
-journal
文件中应用可能未完成的事务或回滚(并在过程中删除它)。实际上,您可以执行任何其他执行某些操作的事务(但仅仅连接/断开连接是不够的),但真空似乎是最简单的方法。

请查看我的编辑。看来-日志文件还没有被删除。我总是看到它,它不适合我;已尝试在数据库上执行select语句,但未处理日志文件。要使此方法正常工作,必须执行某些操作,以使SQLite执行“写入”事务。因为您不想更改内容,所以需要回滚事务。一个简单的例子:“开始;创建表强制\u日志\u清理(id整数主键);回滚;“真空A)如果数据库变大,可能需要运行一段时间b)运行时可能需要三倍的数据库大小(数据库、数据库的临时副本、重写原始文件时的回滚日志)和c)将独占锁定数据库,在运行时阻止OP的PHP应用程序的访问running@cheetah:是的。但我也提供了另一种选择:运行任何非琐碎的事务。简单的连接/断开是不够的。