gpt4 book ai didi

python - Sqlite3,操作错误 : unable to open database file

转载 作者:IT老高 更新时间:2023-10-28 20:32:47 27 4
gpt4 key购买 nike

问题:为什么我打不开数据库?


信息:我正在使用 sqlite3 数据库进行项目。我编写了一个测试程序,它运行并将其传递给数据库:

/tmp/cer/could.db

单元测试程序可以使db没有任何问题。但是,当我实际使用将相同位置传递给它的程序时,出现以下错误:

OperationalError: unable to open database file

我试过这样做:

1) an empty database.
2) the database and the unit test left behind.
3) no database at all.

在三种情况下,我得到了上述错误。最令人沮丧的部分是 unittest 可以做到这一点,但实际程序却不能。

关于到底发生了什么的任何线索?

最佳答案

初步诊断:SQLite 由于某种原因无法打开该文件。

检查明显的原因,以及我建议检查的大致顺序:

  • 程序是否与您正在测试的机器在同一台机器上运行?
  • 它是否像您一样运行(或至少与您测试它的用户相同)?
  • 包含 /tmp 的磁盘是否已满? (您使用的是 Unix,因此请使用 df/tmp 来查找。)
  • /tmp/cer 目录是否有“奇数”权限? (SQLite 需要能够在其中创建其他文件才能处理诸如提交日志之类的事情。)
  • 单元测试代码是否仍在使用该数据库? (使用足够现代的 SQLite 并且在正确的文件系统中时,并发打开 可能的 - 尽管 /tmp 实际上总是在正确的 FS 上,所以可能不是这样 -但仍然不推荐。)
  • 开发代码是真的试图写入该数据库,还是“聪明”的东西让你发现并导致它尝试打开其他东西? (我过去在我的代码中就被这个发现了;不要以为它不会发生在你身上……)
  • 您在单元测试和生产代码中使用相同版本的 SQLite 库吗?

如果您不在同一台机器上,则生产系统很可能没有 /tmp/cer 目录。显然要先解决这个问题。同样,如果您在同一台机器上但以不同的用户身份运行,您可能会遇到权限/所有权问题。磁盘空间是另一个严重的问题,但可能性较小。我不认为这是最后三个,但如果对更明显的部署问题进行了排序,它们值得检查。如果以上都不是,那么您遇到了一个奇怪的问题,并且必须报告更多信息(它甚至可能是 SQLite 中的一个错误,但了解它的开发人员,我认为这不太可能)。

关于python - Sqlite3,操作错误 : unable to open database file,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4636970/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com