H2数据库连接时用户密码错误: 2023-03-03 08:25:07 database: wrong user or password; user: "SA" org.h2.message.DbException: Wrong user name or password [28000-214]
- 出现的问题
- 配置信息
- 原因
- 解决办法
org.h2.message.DbException: Wrong user name or password [28000-214])
出现的问题
H2 数据库连接的时候报错
错误信息:
Wrong user name or password [28000-214] 28000/28000 (Help)
2023-03-03 08:25:07 database: wrong user or password; user: "SA"
org.h2.message.DbException: Wrong user name or password [28000-214]
....
配置信息
spring:
h2:
console:
enabled: true
path: /h2
datasource:
url: jdbc:h2:~/test
hikari:
driver-class-name: org.h2.Driver
username: sa
password: 123456
原因
hikari
数据源的问题
并非是 h2 不支持 hikari 数据源 …
而是为加入 hikari 对应的配置文件
HikartCP,这是springboot官方推荐的数据源技术,作为默认内置数据源使用。
由于之前我已经使用过 tomcat 内置的 DataSource 了,所以 springboot 项目不会再默认使用 hikari 数据源了…
扩展知识
springboot提供了3款内嵌数据源技术,分别如下:
- HikariCP
- Tomcat提供DataSource
- Commons DBCP
第一种,HikartCP,这是springboot官方推荐的数据源技术,作为默认内置数据源使用。啥意思?你不配置数据源,那就用这个。
第二种,Tomcat提供的DataSource,如果不想用HikartCP,并且使用tomcat作为web服务器进行web程序的开发,使用这个。为什么是Tomcat,不是其他web服务器呢?因为web技术导入starter后,默认使用内嵌tomcat,既然都是默认使用的技术了,那就一用到底,数据源也用它的。有人就提出怎么才能不使用HikartCP用tomcat提供的默认数据源对象呢?把HikartCP技术的坐标排除掉就OK了。
第三种,DBCP,这个使用的条件就更苛刻了,既不使用HikartCP也不使用tomcat的DataSource时,默认给你用这个。
解决办法
- 删除
hikari
,直接使用 tomcat 内置的数据源
spring:
h2:
console:
enabled: true
path: /h2
datasource:
url: jdbc:h2:~/test
# hikari:
driver-class-name: org.h2.Driver
username: sa
password: 123456
- 导入
hikari
对应的配置文件
postgresql依赖
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
</dependency>
Hikari依赖(这两个依赖根据springboot版本自行加上版本)
<dependency>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
</dependency>