背景描述:根据项目需求,使用druid连接池连接mysql数据库和derby数据库;
问题描述:在derby数据库环境下报错:init dataSource error Encounter "<EOF>" at~~~。
分析方法:初始化数据时报错,应为配置文件中有错误,分段屏蔽配置文件,确认产生报错的配置项为:validationQuery:SELECT 'x'。
将该配置项注释后又报错:testWhileIdle is true,validataionQuery not set。根据字面意思将testWhileIdle修改为false不再报错,工程正常运行。
但此时数据库将不再进行连接验证,存在一定的风险。查阅相关资料后发现,不同的连接池连接不同的数据库时有不同的测试语句(即validateionQuery)。再结合报错信息(Encounter"<EOF>")即启动数据库时发生了sql语句语法错误且与引号相关。确认为select 'X'错误。根据资料将该测试语句修改为values 1 数据库正常启动运行。
修改后的配置:
dbconfig.properties
url:jdbc:derby://localhost:1527/dbName
driverClassName:org.apache.derby.jdbc.ClientDriver
username:app
url:jdbc:derby://localhost:1527/dbName
driverClassName:org.apache.derby.jdbc.ClientDriver
username:app