启动项目时连接不上数据库,但navicat可以正常连接

锦通  论坛元老 | 2024-9-26 05:47:48 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 1585|帖子 1585|积分 4755

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
碰到的问题:

一个新项目,由于需要远程办公,连接VPN后使用navicat等数据库连接工具的时候可以正常访问数据库,但启动项目时无法连接到数据库,报错信息如下:
   Could not create connection to database server. Attempted reconnect 3 times. Giving up.
  1. java.lang.IllegalStateException: Failed to execute ApplicationRunner
  2.         at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:798)
  3.         at org.springframework.boot.SpringApplication.callRunners(SpringApplication.java:785)
  4.         at org.springframework.boot.SpringApplication.run(SpringApplication.java:345)
  5.         at org.springframework.boot.SpringApplication.run(SpringApplication.java:1356)
  6.         at org.springframework.boot.SpringApplication.run(SpringApplication.java:1345)
  7.         at cn.avicnet.cutter.selection.web.CutterSelectionServiceApplication.main(CutterSelectionServiceApplication.java:18)
  8. Caused by: org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.PersistenceException:
  9. ### Error querying database.  Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC Connection; nested exception is java.sql.SQLNonTransientConnectionException: Could not create connection to database server. Attempted reconnect 3 times. Giving up.
  10. ### The error may exist in cn/avicnet/cutter/selection/system/mapper/app/AreaMapper.java (best guess)
  11. ### The error may involve cn.avicnet.cutter.selection.system.mapper.app.AreaMapper.selectList
  12. ### The error occurred while executing a query
  13. ### Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC Connection; nested exception is java.sql.SQLNonTransientConnectionException: Could not create connection to database server. Attempted reconnect 3 times. Giving up.
复制代码
为了找到问题所在,就写了一个jdbc连接的测试类,结果还是连接不上,为此在网上找了很多方法,但是试过还是不行,后来请教公司大佬,说是vpn的权限问题,有IPv6和IPv4的区别,在VM这一栏加上-Djava.net.preferIPv4Stack=true就可以了
   -Djava.net.preferIPv4Stack=true 是一个Java体系属性,它的作用是告诉Java假造机(JVM)优先使用IPv4协议栈而不是IPv6。当设置为这个属性时,应用步伐将强制在IPv4协议栈上运行。这个选项可以解决一些与IPv6相干的网络问题,特殊是在IPv6配置不正确或受限的环境中,它可以帮助应用步伐绕过IPv6相干的问题,从而正常建立连接
  具体解决方法:

我使用的是2022.3.2版本的idea,我们先点击Edit Configurations

此时找不到VM options,我们需要点击Modify options

 之后再选择add VM options,具体操作如下图

将我们需要修改的属性,即 -Djava.net.preferIPv4Stack=true加入到VM这一栏即可

重新启动idea,启动项目就能正常启动了

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

锦通

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表