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时,默认给你用这个。

解决办法

  1. 删除 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
  1. 导入 hikari 对应的配置文件
postgresql依赖
<dependency>
    <groupId>org.postgresql</groupId>
    <artifactId>postgresql</artifactId>
</dependency>
Hikari依赖(这两个依赖根据springboot版本自行加上版本)
<dependency>
    <groupId>com.zaxxer</groupId>
    <artifactId>HikariCP</artifactId>
</dependency>

更多推荐