postgresql Springboot postgres无法确定合适的驱动程序类

jgwigjjp  于 2022-11-04  发布在  PostgreSQL
关注(0)|答案(5)|浏览(167)

我正在尝试使用SpringBoot和Postgres数据库开发Web应用程序。但是,在连接到应用程序时,我收到错误“无法确定合适的驱动程序类”,按照旧帖子中的建议,我尝试过使用不同版本的jdbc驱动程序,也尝试过手动为NamedParameterJdbcTemplate创建bean。我还验证了库是否存在,是否可以从Java代码访问,以及是否存在于类路径中。但仍然存在同样的问题。我正在使用gradle将所有jar导入构建路径。
下面是代码的git仓库:https://github.com/ashubisht/sample-sbs.git
Gradle依赖项代码:

apply plugin: 'idea'
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'

dependencies {
    compile("org.springframework.boot:spring-boot-starter-web")
    compile("org.springframework.boot:spring-boot-starter-websocket")
    compile("org.springframework.boot:spring-boot-starter-jdbc")
    //compile("org.postgresql:postgresql")
    compile("org.postgresql:postgresql:9.4-1206-jdbc42")
    testCompile("org.springframework.boot:spring-boot-starter-test")
    testCompile group: 'junit', name: 'junit', version: '4.12'
}

用于生成Bean的代码

@Configuration
@PropertySource("classpath:application.properties")
public class Datasource {

    @Value("${db.driverClassName}")
    private String driverClass;
    @Value("${db.url}")
    private String url;
    @Value("${db.username}")
    private String username;
    @Value("${db.password}")
    private String password;

    @Bean
    public NamedParameterJdbcTemplate namedParameterJdbcTemplate() throws Exception{
        System.out.println(driverClass+" "+ url+" "+username+" "+password);
        DriverManagerDataSource source = new DriverManagerDataSource();
        source.setDriverClassName(driverClass);
        source.setUrl(url);
        source.setUsername(username);
        source.setPassword(password);
        NamedParameterJdbcTemplate namedParameterJdbcTemplate = new NamedParameterJdbcTemplate(source);
        return namedParameterJdbcTemplate;
    }
}

这里是application.properties

server.port=8086

# spring.datasource.driverClassName=org.postgresql.Driver

# spring.datasource.url= jdbc:postgresql://localhost:5432/testdb

# spring.datasource.username=postgres

# spring.datasource.password=password

# spring.datasource.platform=postgresql

# spring.jpa.hibernate.ddl-auto=create-drop

db.driverClassName=org.postgresql.Driver
db.url=jdbc:postgresql://localhost:5432/testdb
db.username=postgres
db.password=password
uqxowvwt

uqxowvwt1#

通过创建两个Bean解决了此问题。为DataSource和NamedParameterJdbcTemplate创建了单独的Bean。

@Bean
    public DataSource dataSource(){
        System.out.println(driverClass+" "+ url+" "+username+" "+password);
        DriverManagerDataSource source = new DriverManagerDataSource();
        source.setDriverClassName(driverClass);
        source.setUrl(url);
        source.setUsername(username);
        source.setPassword(password);
        return source;
    }

    @Bean
    public NamedParameterJdbcTemplate namedParameterJdbcTemplate(){
        NamedParameterJdbcTemplate namedParameterJdbcTemplate = new NamedParameterJdbcTemplate(this.dataSource());
        return namedParameterJdbcTemplate;
    }
ezykj2lf

ezykj2lf2#

对我来说,这个问题是postgresSql的一个错误拼写
它只有一个s,
取代了
1.数据库名称:数据库名称:
1.数据库名称:数据库名称

数据库名称:数据库名称:
在Hibernate方言上也检查同样的事情,
PostgresSQLDialect替换为PostgreSQLDialect

iqxoj9l9

iqxoj9l93#

有同样的问题。我的解决方案是将application.properties文件扩展名更改为application.yml

kxkpmulp

kxkpmulp4#

对我来说错误是
无法配置数据源:未指定'url'属性,无法配置任何嵌入式数据源。原因:无法确定合适的驱动程序类
措施:请考虑以下事项:如果您需要嵌入式数据库(H2,HSQL或Derby),请将其放在类路径中。如果您有要从特定概要文件加载的数据库设置,则可能需要激活它(当前没有活动的概要文件)。
问题是缺少配置文件,所以我在类路径中添加了以下内容,它起作用了
Spring.轮廓.活动=偏差

m528fe3b

m528fe3b5#

你试试看

spring.r2dbc.url=r2dbc:postgresql://ip:port/datafeed?currentSchema=user_management
spring.r2dbc.username=username
spring.r2dbc.password=12345
spring.r2dbc.driver=postgresql

希望对你有所帮助!

相关问题