Spring Boot应用创建/data目录遇权限错误,持Admin权限仍无法解决
解决H2数据库创建/data文件夹权限错误的问题
我之前在搭建Spring Boot + H2的项目时也碰到过一模一样的错误,虽然你说当前用户有Admin权限,但大概率是这几个容易忽略的点导致的:
绝对路径的权限限制
你配置的/data/sample.trace.db是绝对路径,指向系统根目录下的data文件夹。很多系统(比如Linux/macOS的根目录、Windows的系统盘根目录)对这类路径的文件操作有严格的权限管控,就算是Admin账户也可能因为系统保护机制无法直接创建文件夹。
解决方法:改成相对路径,比如把配置里的路径改成./data/sample.trace.db,这样会在你的项目根目录下生成data文件夹,完全避开系统根目录的权限问题。禁用H2的trace日志文件
这个报错本质是H2尝试写入trace日志文件失败,你可以直接关闭trace日志输出,从根源解决问题:
在application.properties里添加配置:# 关闭H2控制台的trace功能 spring.h2.console.settings.trace=false # 或者在数据源URL里禁用文件trace spring.datasource.url=jdbc:h2:file:./data/sample;TRACE_LEVEL_FILE=OFFWindows系统的UAC权限陷阱
如果你用的是Windows,就算是Admin账户,默认启动IDE或运行Jar包时是普通权限,没有足够权限在系统盘根目录创建文件夹。可以右键点击IDE或启动脚本,选择以管理员身份运行,不过还是更推荐用相对路径的方案,避免每次都要手动提权。父目录的权限继承问题
如果你一定要用绝对路径,先检查系统根目录下是否已经存在/data文件夹,如果存在,确认它的权限是否允许当前用户写入。比如在Linux下可以执行:# 创建/data文件夹并开放权限(仅适合本地测试,不推荐生产环境) sudo mkdir /data sudo chmod 777 /data
内容的提问来源于stack exchange,提问作者M4V3N
相关产品推荐
相关产品推荐

