hsqldb数据库无法启动(java.net.BindException: Address already in use: NET_Bind)

问题描述这是我们遇见的问题,java.net.BindException: Address already in use: NET_Bind

如图,无法链接数据库,报错提示是java.net.BindException: Address already in use: NET_Bind。这个提示是告诉我们端口被占用了。闲话不多说,咱们直接开始。

解决方案1——杀掉占用端口的程序。

 首先我们可以需要知道,hsqldb的默认端口是9001,如果不知道端口是什么的同学请自行百度。当我们没有修改默认配置文件的时候,并且占用端口的程序可以被“杀死”的话,我们可以使用这种方法。然后我们来看下具体实施方法。
 先看我们的端口被什么占据了,打开cmd,输入下列代码。

netstat -ano |findstr "9001"  #查看9001是被谁占用

 这个netstat -ano 有较多用法,这里不过多涉及,自行bing即可。然后看一下我这里遇到的问题输入以上代码的反馈。
这里输出了两行,然后看到9001是被PID为“4”的程序占用

tasklist |findstr "4" #看看具体程序名是啥

好长好长,总之不知道是啥啊hhh

 行吧,然后我们尝试可不可以“杀死”他们。

taskkill /f /t /im "4"

但是我这边结果不太好,杀不掉!有需要的同学可以自行bing端口命名规则奥。言归正传,看下我这里的运行结果。
删除不掉!
 可以看出效果不好,这进程很难关闭。笔者实施第一种方案失败,不过没关系,第二种方案成功了,但是过程比较复杂。

解决方案2—— 修改端口

 这个方案就会比较麻烦。首先,我们需要把hsqldb.jar的文件路径添加到系统的环境变量中。这个不多说了,不会的请自行Bing。之后,就在你的hsqldb.jar的目录下,新建一个任意的txt文件,然后另存为server.properties。我贴个图,方便理解。
保存类型第二个,文件名复制黏贴即可
 把txt文件保存,然后用记事本打开。(这个地方可能比较呆的操作,但是对新手比较好理解)。接下来我们就要往这里面存放东西了。但是在这之前,我们还需要做一步操作就是寻找空余的端口。如果你仔细看过解决方案1并且自行搜索过,就明白我们需要干什么了。打开cmd,输入以下代码:

netstat -a|findstr xxxx #xxxx是任意输入的数字

 如果你搜索过你就应该知道你需要最好选择5000以上的数字。不多说,接下来呢,会有两种情况。第一种是你的命令行有反应,也就是出现匹配的程序,类似于下图。
输出了两行对吧
 但是这不是我们需要的数字,然后是第二种,你敲下回车后没有反应,如下图:
啥也没有对吧
 好了,到这一步我们就成功找到我们的空闲端口了。OK,那让我们回到上面server.properties文件的输入。输入以下数据:

#begin of 'server.properties' file

#数据库服务的监听端口
server.port=9001

#定义服务名称,也即数据库名称。数据库链接的URL即为

#jdbc:hsqldb:hsql://localhost:9001/bitan。
server.dbname.0=bitan

#该服务在硬盘上的相对或绝对路径。file:后面可以跟相#对或绝对路径,如file:bitan表示数据文件为当前目录下的bitan.*文件。服务名和路径之间通过小数点后的数字关联。比如database.0与#dbname.0关联,database.1与dbname.1关联,……,database.n与dbname.n关联。
server.database.0=file:bitan
#mounts a 'file_in_jar' database with alias 'restest'
#database connection url would be 'jdbc:hsqldb:hsql://host:1234/restest'
#server.database.1=res:/mypackage/test
#server.dbname.1=restest
#mounts a 100% in-memory (transient) database with alias 'memtest'
#database connection url would be 'jdbc:hsqldb:hsql://host:1234/memtest'
#server.database.2=mem:test
#server.dbname.2=memtest
#...
#server.database.n=...
#server.dbname.n=...
server.silent=true

#end of 'server.properties' file

 我们无需关注过多,只需要把 “#数据库服务的监听端口:server.port=9001”,中的9001换成你上面寻找到的空闲端口(如5678),然后保存即可。
 好了,到了这一步,问题基本就可以解决了。你重新链接你的hsqldb,你就会发现,提示变成了正常提示了,如下图:
成功了
 到这一步是不是很开心,是不是觉得终于结束啦。但是先别急,我们还差一点收尾工作。按照hsqldb的开启服务的方式,你打开第二个命令行窗口后,会弹出来这个窗口。如下图:
这里。
 这个时候我们需要多做一点修改。而不仅仅是将type选择为HSQL Database Engine Server(这图里是选好的)。首先是setting name,你需要修改成bitan,然后看到下面的URL没,是不是很眼熟,对,配置文件里有的。这个时候就要找出来我们的配置文件,然后找到这一行,复制黏贴进来就OK了。没关系,我给你找出来你复制就行。

jdbc:hsqldb:hsql://localhost:5678/bitan #5678请修改成你自己输入的端口(上面找的数字)

 最后,点击OK。你的界面就会从这样:
红X
 变成这样:
恭喜
 到这里就大功告成啦。希望这篇文章可以帮助大家解决问题。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值