为何Spring项目将application.properties改写为同内容yaml后启动报错?
问题原因分析
你遇到的报错核心原因是YAML配置中数据源的用户名、密码属性名书写错误,导致Spring无法正确初始化数据库连接,进而Hibernate无法自动识别数据库方言抛出该错误,具体拆解如下:
1. 配置属性对应错误
application.properties中配置的数据库连接账号密码属性为:
spring.datasource.username:数据库连接用户名spring.datasource.password:数据库连接密码
对应的YAML格式配置应该是spring.datasource.username和spring.datasource.password,你误写为了data-username和data-password——这两个属性是Spring用于配置内嵌数据库初始化脚本执行的专属属性,不是常规JDBC连接的身份校验属性。配置错误后Spring拿不到正确的数据库账号密码,无法建立有效数据库连接,Hibernate不能从连接中读取数据库类型自动匹配方言,就会抛出Access to DialectResolutionInfo cannot be null when 'hibernate.dialect' not set错误。
2. 修复方案
直接修改YAML中的属性名即可,修正后的完整配置如下:
spring: application: name: customer-service datasource: url: jdbc:mysql://localhost:3306/hat driver-class-name: com.mysql.cj.jdbc.Driver username: root password: jpa: hibernate: ddl-auto: update show-sql: false
如果你的项目没有依赖spring.application.name的逻辑,也可以省略该配置,不影响数据库连接修复效果。
内容的提问来源于stack exchange,提问作者hat
相关产品推荐
相关产品推荐

