我正在使用h2嵌入式数据库。当我启动我的应用程序时,数据库被初始化,并且我能够获得连接对象。但是,当应用程序尝试在表中插入数据时,它将引发sql异常“未找到表XXXX”。
我可以从H2控制台查看表格。同样的查询可以在控制台上完美运行。
通过本主题另一个问题的答案,我了解到当数据库为空时会发生这种行为。但是从H2控制台,我可以查看和执行查询,并且可以交叉检查它是否是同一数据库,因为我使用的网址和用户完全相同,因此可以同时通过应用程序和H2控制台进行连接。
有什么建议可以解决吗?
所有特权均已到位。所以有一件事可以肯定,我确实指向了错误的数据库。但是我怎么不知道。然后我注意到,当我第一次启动应用程序服务器时,创建的db文件的扩展名为mv.db。当我第一次通过h2控制台连接时,创建了扩展名为h2.db的文件。因此,确实为同一个用户和URL创建了两个不同的数据库。
原因是我的应用程序中存在的h2驱动程序jar版本为1.4(测试版),该版本创建了扩展名为mv.db的db。我正在访问的控制台是通过创建h2.db文件的h2版本1.3(最后一个稳定版本)进行的。
由于应用程序和控制台之间的版本不匹配而导致出现此问题。一旦我将两者都移至1.4(测试版),问题就解决了。