【发布时间】:2018-10-04 02:52:58
【问题描述】:
我正在使用 Visual C++ 编写一个小应用程序,该应用程序将调用 SQLite C 接口来创建数据库并向其中插入一些数据。
在调试应用程序时,我想检查数据库中的数据。因此,我从命令行启动 sqlite3 shell(sqlite3.exe),然后使用以下命令打开数据库:
.打开文件名
之后,我想检查我的应用程序创建的表,但总是得到“表不存在”的错误。
然后我使用“select * from sqlite_master;”但仍然返回空结果。
我做了更多的测试如下:
- 尝试使用 --readonly 选项再次打开数据库,如下所示:
.open --readonly 文件名;
- 打开数据库后,我尝试使用这样的命令:
从 sqlite_master 中选择 *;
然后我会看到“数据库已锁定”错误。我尝试在 Stackoverflow 上搜索解决方案,所有解决方案都只是建议关闭正在访问数据库的其他应用程序。但是,我需要的只是让应用程序仍然可以访问数据库,同时我仍然可以查看(而不是修改)sqlite数据库中的内容,这可能吗?
因此,我只是想知道我是否可以通过 sqlite3.exe shell 同时访问已经被另一个程序打开的 sqlite 数据库? 目前只有我的app会写入数据库,sqlite3 shell只需要读取数据库中的数据。
【问题讨论】:
-
你确定你的程序和 sqlite3 shell 使用的是同一个数据库文件吗?
-
可能是错误的目录。
-
@CL,我确定数据库打开成功,因为我第一次输入错误的名称,我得到一个错误。然后我更正名称,打开成功,没有错误。
-
查看WAL mode。
标签: sqlite