运行mvn clean install应用程序试图将postgres连接到错误的端口

huwehgph  于 2021-06-30  发布在  Java
关注(0)|答案(2)|浏览(268)

运行时出现此错误

$ mvn clean install

org.postgresql.util.PSQLException: Connection to localhost:5432
refused. Check that the hostname and port are correct and that the
postmaster is accepting TCP/IP connections.

但在application.properties中,我已将端口明确定义为5433:

spring.datasource.url=jdbc:postgresql://localhost:5433/mydb

我还在postgres.conf中的5433端口上运行postgres:

port = 5433                             # (change requires restart)

我确实跑了

$ systemctl postgresql restart

更换端口后。
这里怎么了?我没有在我的项目文件的其他地方定义端口。
完整application.properties文件:

spring.main.banner-mode=off
logging.level.org.springframework=ERROR

spring.jpa.hibernate.ddl-auto=none

spring.datasource.initialization-mode=always
spring.datasource.platform=postgres
spring.datasource.url=jdbc:postgresql://localhost:5433/mydb
spring.datasource.username=myuser
spring.datasource.password=mypass

spring.jpa.properties.hibernate.jdbc.lob.non_contextual_creation=true
spring.profiles.active=@spring.profiles.active@
ego6inou

ego6inou1#

问题出在配置文件中(尚未提供)。如果您使用的是springboot,那么您很可能有一个java文件而不是xml文件,并且在其中您必须从application.properties文件调用您的属性。

@Value("${spring.datasource.url}")
private String url;

对于数据源,您应该有一个@bean定义,它应该如下所示:

@Bean
public DataSource dataSource() {
    DriverManagerDataSource dataSource = new DriverManagerDataSource();
    dataSource.setUrl(url);
    dataSource.setUsername(username);
    dataSource.setPassword(password);
    dataSource.setDriverClassName(driverClassName);
    return dataSource;
}

问题是,您要么没有将url设置为application.properties文件中指定的url,要么在某个地方将其覆盖。

  • 编辑
@Configuration
public class PostgreConfiguration {

    @Value("${spring.datasource.url}")
    private String url;

    @Value("${spring.datasource.username}")
    private String username;

    @Value("${spring.datasource.password}")
    private String password;

    @Value("${spring.datasource.driver_class_name}")
    private String driverClassName;

    @Bean
    public DataSource dataSource() {
        DriverManagerDataSource dataSource = new DriverManagerDataSource();
        dataSource.setUrl(url);
        dataSource.setUsername(username);
        dataSource.setPassword(password);
        dataSource.setDriverClassName(driverClassName);
        return dataSource;
    }
}
hwamh0ep

hwamh0ep2#

打开命令
netstat -ao | find "5433" 你会得到

TCP    0.0.0.0:8089           DESKTOP-Q687KK9:0      LISTENING       7732

我们使用7732端口
执行此命令 Taskkill /pid 7732 /F 输出: SUCCESS: The process with PID 7732 has been terminated.systemctl postgresql restart

相关问题