Spring Boot JPA项目迁移后报Oracle数据库Connection refused错误如何解决
Connection refused: connect属于TCP网络连接层面的错误,说明请求根本没有到达Oracle数据库的监听端口,和账号密码配置无关,可按以下顺序排查:
第一步:验证1521端口监听状态
打开终端执行对应命令查看1521端口是否正常监听本地回环地址:
Windows系统执行:netstat -ano | findstr 1521
Mac/Linux系统执行:ss -tunlp | grep 1521
正常结果应该能看到
127.0.0.1:1521或者0.0.0.0:1521的监听记录,如果只有你笔记本的物理网卡IP在监听1521,说明监听器没有绑定本地回环地址,SQL Developer可能走的是本地IPC协议连接所以不受影响,JDBC走TCP协议就会报错。
修复方式:修改Oracle监听器配置文件listener.ora,把监听地址改成localhost或者0.0.0.0,重启监听器即可。
第二步:核对JDBC连接地址配置
你当前配置的连接串为:jdbc:oracle:thin:@//localhost:1521/orcl.station
确认笔记本上Oracle的服务名是不是orcl.station,如果是用SID连接的话需要改成非URL格式的连接串:jdbc:oracle:thin:@localhost:1521:orcl(把orcl替换成你的实际SID)
你可以在SQL Developer的连接属性里查看当前用的是服务名还是SID,以及对应的实际值,和配置文件保持一致即可。
第三步:适配无密码登录规则
笔记本Oracle支持无密码登录的场景下,配置文件要显式指定密码为空字符串,而不是直接删除spring.datasource.password配置项:spring.datasource.password=
部分版本的Spring Data JPA在缺少password配置时,会默认传递非空的默认值,反而导致连接校验失败。
第四步:检查Oracle驱动版本兼容性
确认你的ojdbc驱动版本和笔记本上安装的Oracle数据库大版本一致,避免低版本驱动无法兼容高版本数据库的连接协议。
内容的提问来源于stack exchange,提问作者santocielo99

