You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

生产环境Apache2+Django部署下DuckDB权限拒绝问题求助

生产环境Apache2+Django部署下DuckDB权限拒绝问题求助

我碰到了一个DuckDB的权限问题,折腾了好久都没搞明白,想请大家帮忙看看。

情况是这样的:我创建了一个.db格式的数据库文件,把它放到了Apache2部署的Django应用根目录下,也给www-data用户和该目录配置了访问权限,但运行时还是弹出了权限拒绝的错误。

更奇怪的是下面这两个现象:

  1. 连接数据库和执行SQL语句的时候都没报错,只有调用fetchdf()方法的时候才会触发权限错误。我的代码和报错信息如下:
con = duckdb(database='path/to/db.db', read_only=True)

P = con.execute('SELECT * FROM products LIMIT 1;')

p = P.fetchdf() # 错误就是在这里抛出的

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
duckdb.duckdb.IOException: IO Error: Permission denied
  1. 我用www-data用户直接在命令行运行这段Python代码,完全正常;本地用python manage.py runserver测试也没有任何问题。看起来问题只出在Apache部署的生产环境中。

我怀疑是DuckDB在生产环境下需要访问某个我没开放的目录或文件,但不管是我自己查资料还是问AI,都没搞清楚具体是哪个路径,也不知道该在Apache2的配置里怎么设置。

我已经尝试过这些方法,但都没解决:

  • 修改DuckDB的temp_directory、home_directory、extension_directory和secret_directory参数,指向Django应用根目录下的一个子目录
  • 把数据库文件移到其他目录,并且在Apache的.conf配置文件里也给www-data配置了该目录的访问权限

有没有朋友遇到过类似的问题?或者知道DuckDB在Apache生产环境下还需要哪些额外的权限配置吗?

备注:内容来源于stack exchange,提问作者ahha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.14 16:58:00