GitHub Workflow测试报错:无法打开SQLite数据库文件
解决GitHub Actions中SQLite无法创建数据库文件的问题
首先明确:GitHub Actions默认在仓库工作目录拥有写入权限,不需要额外配置权限。你遇到的sqlite3.OperationalError大概率是相对路径的问题,而非权限设置问题。
问题原因
你的测试用例执行时,当前工作目录是仓库根目录(因为Run Tests步骤是在根目录执行的命令),如果测试脚本位于./tests目录下,脚本里用sqlite3.connect('MIND.db')会尝试在仓库根目录创建数据库文件——即便根目录有权限,也可能因路径逻辑不符预期导致报错;或者你误将数据库路径指向了不存在的目录,引发无法写入的问题。
解决方法
有两种可靠的处理方式:
使用绝对路径创建数据库
在测试脚本中,基于当前脚本所在目录生成绝对路径,确保数据库文件创建在可写入的位置:import os import sqlite3 # 获取当前测试脚本的绝对目录 script_dir = os.path.dirname(os.path.abspath(__file__)) # 拼接数据库文件的绝对路径 db_path = os.path.join(script_dir, 'MIND.db') conn = sqlite3.connect(db_path)切换测试步骤的工作目录
修改GitHub Workflow的Run Tests步骤,切换到tests目录执行测试,此时脚本中的相对路径会直接指向tests目录:- name: Run Tests working-directory: ./tests run: python -m unittest discover -p '*.py'
额外验证(可选)
如果仍怀疑权限问题,可以在测试步骤前添加验证命令,确认工作目录的写入权限:
- name: Verify write permission run: | touch test_write.txt echo "Write test passed" rm test_write.txt
内容的提问来源于stack exchange,提问作者Cas
相关产品推荐
相关产品推荐

