Ubuntu下Python Firebird driver连接/创建数据库报‘Not a directory’异常
解决Ubuntu下firebird.driver报"Not a directory"错误的方案
针对你在Ubuntu 22.04.3 LTS下使用firebird.driver操作Firebird数据库时出现的"Not a directory"错误,以下是排查和解决步骤:
1. 检查Firebird服务用户的目录访问权限
Firebird在Ubuntu默认以firebird系统用户运行,该用户需要有你数据库所在目录的读取和进入权限:
- 先查看目标目录权限:
ls -ld /home/izyakantorovich/Documents/projects/altium-db/ - 如果输出权限是
drwx------(仅所有者可访问),需要调整权限让firebird用户能进入:# 将firebird用户加入你的用户组 sudo usermod -aG $USER firebird # 给目录的组用户添加读和进入权限 sudo chmod g+rx /home/izyakantorovich/Documents/projects/altium-db/ - 调整后重启Firebird服务:
sudo systemctl restart firebird3.0
2. 用Firebird原生工具验证路径可用性
排除Python库的问题,先使用isql工具测试连接或创建数据库:
- 测试打开现有数据库:
isql -u SYSDBA -p masterkey /home/izyakantorovich/Documents/projects/altium-db/DXPSERVER.DAT - 测试创建新数据库:
进入交互后执行:isql -u SYSDBA -p masterkeyCREATE DATABASE '/home/izyakantorovich/Documents/projects/altium-db/test.fdb' user 'SYSDBA' password 'masterkey';
如果isql也报错,说明问题出在Firebird服务配置或系统权限,而非Python代码。
3. 检查Firebird的数据库访问限制配置
打开Firebird的配置文件/etc/firebird/3.0/firebird.conf,确认DatabaseAccess参数设置:
# 确保设置为Full,允许访问任意路径 DatabaseAccess = Full
修改后重启Firebird服务生效。
4. 确认路径格式正确性
- 确保使用绝对路径,避免相对路径导致的解析错误;
- 路径中不要包含特殊字符或空格(你的当前路径无此问题,但需注意);
- 对于DXPSERVER.DAT这类特殊格式数据库,确保它在Linux下能被Firebird识别(可以先用
isql验证)。
内容的提问来源于stack exchange,提问作者izyakantorovich
相关产品推荐
相关产品推荐

