java - 强制JDBC不使用代理

标签 java mysql jdbc proxy

我有一个带有mysql的XAMPP(所以是localhost),我可以通过mysql workbench或phpymadmin毫无问题地连接到它。
我有一个使用hibernate的webapp(也尝试使用简单且丑陋的方式连接到我的数据库)

Class.forName("com.mysql.jdbc.Driver");
Connection cn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/testlink", "testlink", "testlink");
Statement st = cn.createStatement();
String query = "INSERT INTO `cfield_testprojects` (`field_id`, `testproject_id`, `display_order`, `location`, `active`, `required`, `required_on_design`, `required_on_execution`";
                    st.executeUpdate(query);


我尝试了localhost:3306并且没有端口到...我一直都遇到相同的错误:

com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packet
s from the server.
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
        at com.mysql.jdbc.Util.handleNewInstance(Util.java:389)
        at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1038)
        at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:338)
        at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2237)
        at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2270)
        at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2069)
        at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:794)
        at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:44)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
        at com.mysql.jdbc.Util.handleNewInstance(Util.java:389)
        at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:399)
        at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:325)
        at java.sql.DriverManager.getConnection(DriverManager.java:571)
        at java.sql.DriverManager.getConnection(DriverManager.java:215)
        at BuildProject.doPost(BuildProject.java:148)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:648)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:291)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:219)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)
        at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:142)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
        at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:610)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:518)
        at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1091)
        at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:668)
        at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:283)
        at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.doRun(AprEndpoint.java:2463)
        at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:2452)
        at java.util.concurrent.ThreadPoolExecutor.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)
        at java.lang.Thread.run(Thread.java:745)
Caused by: java.net.SocketException: Unknown proxy type : HTTP
        at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:396)
        at java.net.Socket.connect(Socket.java:579)
        at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:213)
        at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:297)
        ... 39 more


我在stackoverflow以及其他所有地方都关注所有与此有关的问题。
我在0.0.0.0上绑定了mysql ...我用过useSystemProxies = false(或类似的东西)无法正常工作。我只希望jdbc直接连接到我的本地主机数据库...请帮助我,我会发疯的

没用:
MySQL Connect via proxy in Java

最佳答案

这个问题以前曾发生在我身上,但后来没有解决,但后来我改变了方法后再也没有发生过,
需要注意的几件事,看看是否可以解决您的问题:


尝试将Connection对象,PreparedStatement / Statement(如果有的话),ResultSet对象(如果有的话)设置为全局变量(我更喜欢私有)。
在构造函数中初始化Connection以及Driver(使用class.forName())的初始化。
如果需要,可以使用单独的方法或在主代码中编写查询代码。
查看将localhost更改为127.0.0.1是否有帮助
确保在mysql配置文件(my.ini)中注释了跳过网络(即在其前面加上#)
不要在查询字符串中引用表名
不要犹豫更新jdk / jre / mysql-connector jar,他们也许可以解决这个问题。

关于java - 强制JDBC不使用代理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30532027/

相关文章:

java - 更改网络后如何解决 'Cannot create PoolableConnectionFactory'异常?

MySQL跨表更新

mysql - 无法更改 MySQL 列以具有 NOT NULL 约束

java - 无法为连接 URL '' 创建类 'jdbc:mysql://localhost:3306/web13?useSSL=false&serverTimezone=UTC' 的 JDBC 驱动程序

java - android java - 将字符串转换为字节变量

java - RS232串口通讯设置

java - OpenShift 上到 MySQL 的 JDBC 连接池

java - 使用连接池的 Select SQL 的准备语句

java - 应用程序崩溃了,我知道它与 "java.lang.NumberFormatException: Invalid int: "$19.0 0""(日志中)有关,但我不知道如何修复它

java - 我的代码线程安全吗?