H2数据库能否独立于IDE运行?自动插数据及枚举报错求助
H2数据库相关问题解决方案
一、IntelliJ中H2 SQL日志显示与自动数据插入设置
- SQL日志显示:要在IntelliJ控制台看到建表、插入数据的SQL日志,只需在
application.properties中添加以下配置:logging.level.org.springframework.jdbc=DEBUG logging.level.h2=DEBUG - 自动插入数据:Spring Boot默认会自动执行
src/main/resources或src/test/resources下的data.sql文件(Spring Boot 2.x及以上版本,需确保spring.sql.init.mode=always,可根据环境调整:开发环境用always,生产环境用never),无需手动插入,也不用在数据源URL中添加INIT=RUNSCRIPT参数,避免重复执行脚本引发冲突。
二、H2数据库能否独立于IDE存在
H2完全可以脱离IDE运行,它有多种运行模式:
- 内存模式:默认的
mem模式是进程内数据库,进程结束数据就消失,适合测试场景; - 文件模式:将数据源URL改为
jdbc:h2:file:/path/to/your/db,数据会持久化到本地文件,即使IDE关闭,下次启动仍能加载数据; - 独立服务器模式:可以启动H2独立服务器,通过JDBC连接串
jdbc:h2:tcp://localhost/~/test远程连接,和MySQL等数据库的使用方式一致,完全脱离IDE运行。
三、data.sql枚举重复创建错误解决
错误原因
在数据源URL中添加INIT=RUNSCRIPT参数执行data.sql,同时Spring Boot的自动初始化机制又会再次执行该脚本,导致枚举类型被重复创建,抛出Domain "CATEGORY" already exists错误;直接注释枚举创建语句后,建表时又找不到对应的枚举类型。
解决方案
- 移除URL中的INIT参数:让Spring Boot的自动初始化机制来处理
data.sql,避免重复执行脚本。 - 修改data.sql脚本:先删除已存在的枚举和表,再创建新的枚举和表,确保每次执行脚本时环境干净:
-- 清理已存在的表和枚举 DROP TABLE IF EXISTS Encouragement; DROP TYPE IF EXISTS Category; DROP TYPE IF EXISTS Tone; DROP TYPE IF EXISTS Topic; -- 创建枚举类型 CREATE TYPE Category AS ENUM('WhoIAmInChrist','Default'); CREATE TYPE Tone AS ENUM('Default', 'Uplifting', 'Urging', 'Warning', 'Soothing', 'Comforting', 'Inspiring', 'Centering', 'Balanced'); CREATE TYPE Topic AS ENUM('Default', 'AcceptedInChrist', 'SignificantInChrist', 'SecureInChrist', 'NoAnxietyInChrist'); -- 创建表并插入数据 CREATE TABLE Encouragement(ID INT PRIMARY KEY, CATEGORY Category, TOPIC Topic, TONE Tone, MESSAGE VARCHAR(512)); INSERT INTO Encouragement VALUES(-1, 'Default', 'Default', 'Default', 'We walk by Faith, not by Sight'); INSERT INTO Encouragement VALUES(0,'WhoIAmInChrist','AcceptedInChrist','Uplifting','John 1:12 I am God''s child.'); INSERT INTO Encouragement VALUES(1,'WhoIAmInChrist','AcceptedInChrist','Uplifting','John 15:15 As a disciple, I am a friend of Jesus Christ.'); - 配置初始化模式:在
application.properties中设置spring.sql.init.mode=always,确保开发环境下每次启动都执行初始化脚本。
内容的提问来源于stack exchange,提问作者likejudo
相关产品推荐
相关产品推荐

