32

是否有任何内置函数可以在 SQLite 中启用查询日志。

我熟悉Trace API,但我想知道是否有任何预定义的函数。

4

1 回答 1

18

没有像 MySQL 那样简单的方法来做到这一点,但有一些选择:

一:

一些包装库内置了类似的东西。但是要找到一个包装库,您可能首先需要识别目标语言。Perl DBI?Python?C++?

二:

不会(以任何方式)推荐以下“生产级”解决方案,但如果您主要是在试验和/或调试,那么您可以尝试在每个事务结束之前检查回滚日志。 请参阅此处有关回滚日志的信息:http://www.sqlite.org/tempfiles.html 如何检测“每个事务的结束”取决于您的代码和/或调试器中的断点。

我必须再次强调:我刚才提到的完全是 hack-around,即使提到它我也觉得很脏。

三:

您可以在(非常活跃和亲切的)sqlite 邮件列表中询问,但他们可能只会再次强调 sqlite3_trace。

...其他随机的事情:

在有点(几乎没有?)相关的注释中,当您启动“./sqlite3”命令提示符会话时,您可以键入:

.explain

这为在提示符处执行的每个查询启用了有趣且有指导意义的详细输出。

我刚刚找到的更多信息:

可以传递给“sqlite3_config()”的标志之一是 SQLITE_CONFIG_LOG。 这是另一种方式(除了跟踪 API)设置回调并定期从 sqlite 库接收状态信息。我认为它主要用于错误日志消息。

于 2012-06-12T17:01:52.897 回答