2023-02-12
沉溺于追求物质享受,就等于给飞鸟的双翅系上了黄金——佚名
直接改依赖:
1 | |
随便运行一个test报错:

这里提到了关键字:TestDatabaseAutoConfiguration
我们进入org.springframework.boot.test.autoconfigure.jdbc.TestDatabaseAutoConfiguration$EmbeddedDataSourceFactory.getEmbeddedDatabase(TestDatabaseAutoConfiguration.java:191)
发现这里连接为空才会抛异常

那我们ctrl+f8断点打在if这里,shift+f9来debug一下
发现进入了EmbeddedDatabaseConnection.get

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

f7看下ClassUtils.isPresent,发现是forName
按下f8发现直接到抛出异常返回false了,此时我们丢帧

回到了外面

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

1 | |

大概意思就是说不支持当前java版本了
我们换个早一点的依赖试试:
1 | |
成功运行下来

之后的报错就很容易解决了,是原来H2的ddl(Data Definition Language)的COMMENT关键字不支持,我们用正则替换掉
ctrl+r打开替换框,alt+x打开正则模式,输入正则后,按下alt+a替换全部
1 | |

我们再试试另一个正则
1 | |
再次运行,发现不支持NULL DEFAULT xxx格式,替换掉DEFAULT前面的NULL

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

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

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