Sqlite3,操作错误:无法在 macOS、外部硬盘 db 上打开数据库文件

问题描述 投票:0回答:2

我已经查看了这方面的几个主题,并尝试了各种建议的解决方案(例如此处),但我仍然无法打开我的 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 问题

python-3.x macos sqlite
2个回答
0
投票

好吧,我通过尝试将文件从 macbook pro 命令行简单复制/粘贴到外部驱动器中来解决这个问题

cp <source> <destination>

并且成功了。因此,我的 python 编辑器缺少权限:我在 macbook pro 上授予了对 PyCharm 的完整磁盘访问权限,现在我获得了外部硬盘驱动器中所需的目录列表,并可以访问其上的数据库。


0
投票

运行 sqlite3 的应用程序需要完全磁盘访问才能访问数据库文件。

要启用此功能,请打开 系统设置

然后转到隐私与安全

然后转到全磁盘访问

然后单击您想要授予访问权限的应用程序。在我的示例中,我使用 iTerm 作为终端,因此我已授予它访问权限。

© www.soinside.com 2019 - 2024. All rights reserved.