Bootstrap

【Bug经验分享】Postgresql 项目链接不上,JDBC及Datasource可以连接,Navicat也可连接

在这里插入图片描述


更多相关内容可查看

CMD-telnet测试

telnet 127.0.0.1 5432

在这里插入图片描述

Datasource 形式测试

package cfca.hke.bankcomm.test;

import com.zaxxer.hikari.HikariConfig;
import com.zaxxer.hikari.HikariDataSource;

import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.SQLException;

public class DatabaseConnectionTest {

    public static void main(String[] args) {
        // 配置 HikariCP 连接池
        HikariConfig config = new HikariConfig();
        config.setJdbcUrl("jdbc:postgresql://127.0.0.1:5432/scdb");
        config.setUsername("postgres");
        config.setPassword("123456");

        // 设置其他可选配置
        config.setMaximumPoolSize(10);
        config.setMinimumIdle(2);
        config.setIdleTimeout(30000);
        config.setMaxLifetime(1800000);

        // 创建 DataSource
        DataSource dataSource = new HikariDataSource(config);

        // 测试连接
        try (Connection connection = dataSource.getConnection()) {
            if (connection != null) {
                System.out.println("数据库连接成功!");
            }
        } catch (SQLException e) {
            System.err.println("数据库连接失败: " + e.getMessage());
        }
    }
}

JDBC 形式测试

package cfca.hke.bankcomm.test;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

public class PostgreSQLConnectionTest {

    // JDBC 连接信息
    private static final String JDBC_URL = "jdbc:postgresql://127.0.0.1:5432/scdb";
    private static final String JDBC_USERNAME = "postgres";
    private static final String JDBC_PASSWORD = "123456";

    public static void main(String[] args) {
        Connection connection = null;
        try {
            // 1. 加载 JDBC 驱动
            Class.forName("org.postgresql.Driver");

            // 2. 建立数据库连接
            connection = DriverManager.getConnection(JDBC_URL, JDBC_USERNAME, JDBC_PASSWORD);
            System.out.println("数据库连接成功!");

            // 3. 执行一个简单的查询
            Statement statement = connection.createStatement();
            ResultSet resultSet = statement.executeQuery("SELECT 1");

            // 4. 处理查询结果
            if (resultSet.next()) {
                System.out.println("测试查询结果: " + resultSet.getInt(1));
            }

        } catch (Exception e) {
            System.err.println("数据库连接失败!");
            e.printStackTrace();
        } finally {
            // 5. 关闭连接
            if (connection != null) {
                try {
                    connection.close();
                    System.out.println("数据库连接已关闭。");
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }
    }
}

问题解决

l利用上述方式都发现无法解决,查看conf文件的最大连接数,我的项目中给了200,默认是100,所以导致链接不上

在这里插入图片描述
修改最大链接数

在这里插入图片描述
重启服务Win+R,输入services.msc

在这里插入图片描述
找到postgre服务,重新启动

在这里插入图片描述
navicat测试

在这里插入图片描述

;