问题描述
如图,无法链接数据库,报错提示是java.net.BindException: Address already in use: NET_Bind。这个提示是告诉我们端口被占用了。闲话不多说,咱们直接开始。
解决方案1——杀掉占用端口的程序。
首先我们可以需要知道,hsqldb的默认端口是9001,如果不知道端口是什么的同学请自行百度。当我们没有修改默认配置文件的时候,并且占用端口的程序可以被“杀死”的话,我们可以使用这种方法。然后我们来看下具体实施方法。
先看我们的端口被什么占据了,打开cmd,输入下列代码。
netstat -ano |findstr "9001" #查看9001是被谁占用
这个netstat -ano 有较多用法,这里不过多涉及,自行bing即可。然后看一下我这里遇到的问题输入以上代码的反馈。
tasklist |findstr "4" #看看具体程序名是啥
行吧,然后我们尝试可不可以“杀死”他们。
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。你的界面就会从这样:
变成这样:
到这里就大功告成啦。希望这篇文章可以帮助大家解决问题。