我已经查看了这方面的几个主题,并尝试了各种建议的解决方案(例如此处),但我仍然无法打开我的 sqlite 数据库。
它曾经工作顺利,但最近(我无法确定何时)我收到了错误:
Sqlite3, OperationalError: unable to open database file
当前设置:数据库位于通过 USB 连接到 mac mini 的外部硬盘上。我使用 macbook pro 通过以太网连接到这个 mac mini“服务器”。在我的 MacBook Pro 中,以下代码返回错误:
import sqlite3 as sq3
import os
filename = '/Volumes/AGCM_DB/Database/AGCM.db'
conn = sq3.connect(filename)
我尝试过的:
直接从 mac mini 运行代码效果很好
如果我将数据库复制/粘贴到我的 MacBook Pro 上,运行代码就可以正常工作。
外置硬盘、macbookpro 和 mac mini 上有足够的可用空间
从我的 MacBook Pro,我跑了
打印(os.path.exists(文件名))
返回 True,因此我的 MacBook Pro 通过 mac mini“看到”外部硬盘上的文件。
我检查了数据库文件夹和 AGCM.db 文件的权限,我的 MacBook Pro 具有读写权限。
我的猜测是我在某处缺少一些许可(但在哪里?)。
Mac Mini:OS High Sierra Macbook pro:OS Big Sur
编辑:我做了另一个读取“.csv”文件的测试,并收到错误“不允许操作”所以这告诉我我有权限问题,这不是 sqlite 问题
好吧,我通过尝试将文件从 macbook pro 命令行简单复制/粘贴到外部驱动器中来解决这个问题
cp <source> <destination>
并且成功了。因此,我的 python 编辑器缺少权限:我在 macbook pro 上授予了对 PyCharm 的完整磁盘访问权限,现在我获得了外部硬盘驱动器中所需的目录列表,并可以访问其上的数据库。
运行 sqlite3 的应用程序需要完全磁盘访问才能访问数据库文件。
要启用此功能,请打开 系统设置
然后转到隐私与安全
然后转到全磁盘访问
然后单击您想要授予访问权限的应用程序。在我的示例中,我使用 iTerm 作为终端,因此我已授予它访问权限。