h2换hsqldb最新版报错

简介: h2换hsqldb最新版报错

沉溺于追求物质享受,就等于给飞鸟的双翅系上了黄金——佚名

直接改依赖:

<!--<dependency>
    <groupId>com.h2database</groupId>
    <artifactId>h2</artifactId>
    <version>${h2.version}</version>
    <scope>test</scope>
</dependency>-->
<dependency>
    <groupId>org.hsqldb</groupId>
    <artifactId>hsqldb</artifactId>
    <version>2.7.1</version>
    <scope>test</scope>
</dependency>


随便运行一个test报错:

这里提到了关键字:TestDatabaseAutoConfiguration

我们进入org.springframework.boot.test.autoconfigure.jdbc.TestDatabaseAutoConfiguration$EmbeddedDataSourceFactory.getEmbeddedDatabase(TestDatabaseAutoConfiguration.java:191)

发现这里连接为空才会抛异常

那我们ctrl+f8断点打在if这里,shift+f9debug一下

发现进入了EmbeddedDatabaseConnection.get

F7再回车,深入get方法,发现这里的逻辑是如果driverClass存在,则返回对应的连接枚举EmbeddedDatabaseConnection,我们等待hsqldriverClass驱动

f7看下ClassUtils.isPresent,发现是forName

按下f8发现直接到抛出异常返回false了,此时我们丢帧

回到了外面

再按下f7进去,ctrl+w选中forName和参数,按下alt+f8,发现了真正的报错

1
org/hsqldb/jdbc/JDBCDriver has been compiled by a more recent version of the Java Runtime (class file version 55.0), this version of the Java Runtime only recognizes class file versions up to 52.0

大概意思就是说不支持当前java版本了

我们换个早一点的依赖试试:

<dependency>
    <groupId>org.hsqldb</groupId>
    <artifactId>hsqldb</artifactId>
    <version>2.5.2</version>
    <scope>test</scope>
</dependency>

成功运行下来

之后的报错就很容易解决了,是原来H2ddl(Data Definition Language)COMMENT关键字不支持,我们用正则替换掉

ctrl+r打开替换框,alt+x打开正则模式,输入正则后,按下alt+a替换全部

// 以COMMENT开头,直到遇到","为止,我们这里替换为空即可
COMMENT[^,]+
COMMENT[^,]*

我们再试试另一个正则

// 以[ COMMENT ' ]开头,以'结尾,我们这里替换为空即可
COMMENT '.*'

再次运行,发现不支持NULL DEFAULT xxx格式,替换掉DEFAULT前面的NULL

image-20230212231509792.png

再次运行,发现不支持无SQL不执行查询,而是会报错

而且不支持CASE field WHEN conditionValue THEN actualValue的语法

因此换回H2了,ctrl+alt+z,选择pom.xml,按下alt+r或者直接回车

相关文章
|
SQL IDE Java
datagrip2022最新版安装破解与激活教程,亲测可用
Datagrip 应该是目前最好用的一款数据库连接工具,拥有智能查询控制台,搞笑的架构导航
8468 1
|
PyTorch 算法框架/工具
更换Anaconda的下载源为国内源的办法
更换Anaconda的下载源为国内源的办法
2933 0
|
安全 数据库连接 数据库
Navicat16最新版破解激活教程,亲测可用
本篇文章教大家如何破解 Navicat,Navicat是一套快速、可靠并价格相宜的数据库管理工具,专为简化数据库的管理及降低系统管理成本而设。它的设计符合数据库管理员、开发人员及中小企业的需要。Navicat 是以直觉化的图形用户界面而建的,让你可以以安全并且简单的方式创建、组织、访问并共用信息。
8400 0
|
5月前
|
前端开发 Java
2022最新版JDK1.8的安装教程、包含jdk1.8的提取码(亲测可用)
这篇文章提供了详细的JDK 1.8的安装步骤,包括下载、安装向导、环境变量配置,以及如何检查安装是否成功的方法。
2022最新版JDK1.8的安装教程、包含jdk1.8的提取码(亲测可用)
XMind2022最新版破解激活教程,亲测可用
Xmind 是一款 全功能 的思维导图和头脑风暴软件。像大脑的瑞士军刀一般,助你理清思路,捕捉创意。
13970 1
|
Java Android开发
jdk版本低于1.7 waterdrop 打不开解决
jdk版本低于1.7 waterdrop 打不开解决
101 0
xshell6 要继续使用此程序,您必须应用最新的更新或使用新版本。
xshell6 要继续使用此程序,您必须应用最新的更新或使用新版本。
xshell6 要继续使用此程序,您必须应用最新的更新或使用新版本。
|
存储 Android开发 iOS开发
三分钟了解Studio One6最新版二十项功能介绍及下载
Studio One是一款音乐编曲软件,是音乐工作者必不可少的创作工具,用于创建、录制、混合和掌握音乐和其他音频。无论你是第一次接触数字音乐工作站(DAW),还是第一次尝试制作属于自己的音乐,Studio One 6都能给你非凡的体验!Studio One 6新功能包括智能模板、乐谱支持歌词,全局视频轨,还有全新的声码器插件。万众期待的2022新版 Studio One 终于来了!在广受好评的5系列基础上,Studio One 6 又将给喜欢创作音乐的爱好者,带来哪些惊喜功能呢?请跟随 Studio One 中文来一探究竟!抢先体验20项全新功能吧!
1755 0
|
移动开发 IDE JavaScript
Webstorm2022最新版破解与激活教程,亲测可用
WebStorm 是JetBrains公司旗下一款JavaScript 开发工具。已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。
1995 0
|
自然语言处理 监控 安全
CleanMyMac2023官方最新版有哪些功能介绍?
电脑系统垃圾太多,影响使用效率,有哪些好用的mac系统垃圾清理工具值得入手呢?小编整理的几款简单好用的分享给大家,需要的拿走,小白必备,mac系统垃圾清理工具分享。
137 0