SpringBoot测试时H2数据库只读文件系统错误排查求助
解决H2内存数据库启动时的"Read-only file system"错误
问题根源
你遇到的错误是由两个配置错误导致的:
- H2数据库URL格式错误,导致H2误将内存数据库的标识当作文件路径尝试写入,而根目录是只读的
- JPA数据库方言配置存在语法错误
修正步骤
修正H2数据库URL
原配置中的spring.datasource.url=jdbc:h2://mem:db;DB_CLOSE_DELAY=-1多了一个斜杠,正确的内存数据库URL格式应该是:spring.datasource.url=jdbc:h2:mem:db;DB_CLOSE_DELAY=-1错误的URL会让H2试图在根目录创建
/mem:db.trace.db文件,触发只读文件系统的报错。修正JPA数据库方言
原配置中的spring.jpa.database-platform=org.hibernate.dialect.H2Dialect.末尾多了一个英文句号,需要删除:spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
完整修正后的配置文件
spring.datasource.url=jdbc:h2:mem:db;DB_CLOSE_DELAY=-1 spring.datasource.username= spring.datasource.password= spring.datasource.driver-class-name=org.h2.Driver spring.jpa.hibernate.ddl-auto=create-drop spring.jpa.show-sql=true spring.jpa.database-platform=org.hibernate.dialect.H2Dialect spring.jpa.properties.hibernate.format_sql=true server.error.include-message=always
修改完成后重新运行测试,错误应该会消失。
内容的提问来源于stack exchange,提问作者RobertGC
相关产品推荐
相关产品推荐

