刚接触这个h2内存数据库,被这个问题折腾2天了,我使用的是mybatis-plus,而H2默认 表名、列名都是大写,和mybatis plus默认的策略有冲突(SQL大写变小写加下划线),虽然可以配置关闭掉,但全部大写还是看着不习惯......
所以百度搜了下关闭的方法,在url链接上加上 DATABASE_TO_UPPER=FALSE 就行了,但这问题就来了,由于我加了 AUTO_SERVER=TRUE 也就是混合模式,在idea中修改数据就会
报错:
[90079][90079] org.h2.jdbc.JdbcSQLSyntaxErrorException: Schema "information_schema" not found; SQL statement: select catalog_name from information_schema.catalogs [90079-200]. Schema "information_schema" not found; SQL statement: select catalog_name from information_schema.catalogs [90079-200] (458 ms)
解决办法
后面搜索到 github同样有人遇到了这个问题,给出的解决方法是使用 DATABASE_TO_LOWER=TRUE 参数。记得删除原来的库重新生成。
我的配置如下:
spring.datasource.url=jdbc:h2:./db/qq_bot;DATABASE_TO_LOWER=TRUE;AUTO_SERVER=TRUE;AUTO_SERVER_PORT=9092;USER=sa;PASSWORD=sa; #spring.datasource.h2.username=admin #spring.datasource.h2.password=admin spring.datasource.h2.driver-class-name=org.h2.Driver
至于我为啥把用户名密码配置在url里.......
使用H2需要注意的问题
1、如果修改了url配置,原来的数据库要删除重新生成,因为在第一次创建数据库的时候就写死了,无法修改。
2、关于混合模式,我一直以为配置了,AUTO_SERVER=TRUE;AUTO_SERVER_PORT=9092; 就可以使用tcp直接连接进行修改了,虽然端口开放了但会说密码错误,其实只是可以使用相同的url再次连接而已。
参考文章:
https://github.com/h2database/h2database/issues/485