所以昨天我的servlet运行得很好,我可以从我本地托管的mysql数据库中获取信息。 但今天我突然得到以下异常
com.mysql.jdbc.CommunicationsException:由于基础异常导致通信链接失败:** BEGIN NESTED EXCEPTION ** java.net.ConnectException消息:连接被拒绝STACKTRACE:java.net.ConnectException:连接在java.net被拒绝。 java.net.AbstractPlain上的PlainSocketImpl.socketConnect(本机方法)java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339)java.net.AbstractPocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200)at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java: 182)在java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)java.net.Socket.connect(Socket.java:579)java.net.Socket.connect(Socket.java:528)java。 net.Socket。(Socket.java:425)at java.net.Socket。(Socket.java:241)at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:256)at com.mysql.jdbc.MysqlIO 。(MysqlIO.java:271)位于com.mysql.jdbc.Connection的com.mysql.jdbc.Connection.createNewIO(Connection.java:2771)。(Connection.java :1555)位于java.sql.DriverManager.getConnection(DriverManager.java:215)的java.sql.DriverManager.getConnection(DriverManager.java:571)中的com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:285)在Database.getConnection(Database.java:18)的SelectionAlgorithm.execute(SelectionAlgorithm.java:13),在FirstServlet.init(FirstServlet.java:36)的javax.servlet.GenericServlet.init(GenericServlet.java:158)atg .apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1269)在org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1182)在org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper的.java:853)在org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:134)在org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:110)在org.apache.catalina。 authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:506)at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve。 java:169)org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:962)org.apache.catalina.core .StandardEngineValve.invoke(StandardEngineValve.java:116)在org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:452)在org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1087)在org.apache.coyote.AbstractProtocol $ AbstractConnectionHandler.process(AbstractProtocol.java:637)位于java.util.concurrent.ThreadPoolExecutor的org.apache.tomcat.util.net.JIoEndpoint $ SocketProcessor.run(JIoEndpoint.java:316)。 runWorker(ThreadPoolExecutor.java:1145)at java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:615)at org.apache.tomcat.util.threads.TaskThread $ WrappingRunnable.run(TaskThread.java:61)在java.lang.Thread.run(Thread.java:745)** END NESTED EXCEPTION **发送到服务器的最后一个数据包是1毫秒前。 at com.mysql.jdbc.Connection.createNewIO(Connection.java:2847)at com.mysql.jdbc.Connection。(Connection.java:1555)at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:285)在java.sql.DriverManager.getConnection(DriverManager.java:571)java.sql.DriverManager.getConnection(DriverManager.java:215),在Database.getConnection(Database.java:18)的SelectionAlgorithm.execute(SelectionAlgorithm.java: 13)在组织的org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1269)的javax.servlet.GenericServlet.init(GenericServlet.java:158)的FirstServlet.init(FirstServlet.java:36)。 apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1182)atg.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:853)at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve。 java:134)org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:110)at org.apache.catalina.authenticator.AuthenticatorBas e.invoke(AuthenticatorBase.java:506)在org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:169)在org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)在组织.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:962)在org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)在org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter .java:452)org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1087)atg.apache.coyote.AbstractProtocol $ AbstractConnectionHandler.process(AbstractProtocol.java:637)org.apache.tomcat。 util.net.JIoEndpoint $ SocketProcessor.run(JIoEndpoint.java:316)在java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)在java.util.concurrent.ThreadPoolExecutor中的$ Worker.run(ThreadPoolExecutor.java: 615)at org.apache.tomcat.util.threads.TaskThread $ WrappingRunnable.run(TaskThread.java:61)at java.lang.Thread.run(Thread的.java:745)
我尝试通过终端连接数据库并且工作正常,我使用续集Pro作为管理我的数据库的GUI工具,它也连接得很好。所以我不能不知道问题可能是什么。 我试过检查防火墙,一切都很好。
下面是我用来连接数据库的网址
DB_URL="jdbc:mysql://localhost/pickdatabase";
注意:我知道网址缺少端口号,但过去一周它的工作正常,没有使用端口号。所以我尝试包括端口号(3306),但它仍然无法工作,我甚至尝试使用" 127.0.0.1"而不是" localhost"在URL中,但它仍然无法正常工作。
答案 0 :(得分:0)
对我而言,这听起来像是权限或防火墙问题。数据库所在的计算机是什么?我还要仔细检查你连接的IP是否有一个有连接权限的mysql用户。您可能必须添加具有此命令启动的所有权限的root用户
CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';