Java无法使用JDBC创建表

Java无法使用JDBC创建表,java,jdbc,Java,Jdbc,在本地,我可以使用JDBC创建表,但在服务器上有以下错误 The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server. at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Meth

在本地,我可以使用JDBC创建表,但在服务器上有以下错误

The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490)
    at com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:61)
    at com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:105)
    at com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:151)
    at com.mysql.cj.exceptions.ExceptionFactory.createCommunicationsException(ExceptionFactory.java:167)
    at com.mysql.cj.protocol.a.NativeProtocol.negotiateSSLConnection(NativeProtocol.java:361)
    at com.mysql.cj.protocol.a.NativeAuthenticationProvider.negotiateSSLConnection(NativeAuthenticationProvider.java:777)
    at com.mysql.cj.protocol.a.NativeAuthenticationProvider.proceedHandshakeWithPluggableAuthentication(NativeAuthenticationProvider.java:486)
    at com.mysql.cj.protocol.a.NativeAuthenticationProvider.connect(NativeAuthenticationProvider.java:202)
    at com.mysql.cj.protocol.a.NativeProtocol.connect(NativeProtocol.java:1449)
    at com.mysql.cj.NativeSession.connect(NativeSession.java:165)
    at com.mysql.cj.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:955)
    at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:825)
    ... 9 more
Caused by: javax.net.ssl.SSLHandshakeException: No appropriate protocol (protocol is disabled or cipher suites are inappropriate)
    at java.base/sun.security.ssl.HandshakeContext.<init>(HandshakeContext.java:170)
    at java.base/sun.security.ssl.ClientHandshakeContext.<init>(ClientHandshakeContext.java:98)
    at java.base/sun.security.ssl.TransportContext.kickstart(TransportContext.java:221)
    at java.base/sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:433)
    at java.base/sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:411)
    at com.mysql.cj.protocol.ExportControlled.performTlsHandshake(ExportControlled.java:315)
    at com.mysql.cj.protocol.StandardSocketFactory.performTlsHandshake(StandardSocketFactory.java:188)
    at com.mysql.cj.protocol.a.NativeSocketConnection.performTlsHandshake(NativeSocketConnection.java:99)
    at com.mysql.cj.protocol.a.NativeProtocol.negotiateSSLConnection(NativeProtocol.java:352)


成功发送到服务器的最后一个数据包是0毫秒前的。驱动程序尚未从服务器收到任何数据包。
位于java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法)
位于java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
位于java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
位于java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490)
在com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:61)上
在com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:105)上
在com.mysql.cj.exceptions.ExceptionFactory.createException上(ExceptionFactory.java:151)
位于com.mysql.cj.exceptions.ExceptionFactory.createCommunicationsException(ExceptionFactory.java:167)
位于com.mysql.cj.protocol.a.NativeProtocol.negotiateSSLConnection(NativeProtocol.java:361)
在com.mysql.cj.protocol.a.NativeAuthenticationProvider.negotiateSSLConnection上(NativeAuthenticationProvider.java:777)
在com.mysql.cj.protocol.a.NativeAuthenticationProvider.proceedHandshakeWithPluggableAuthentication(NativeAuthenticationProvider.java:486)上
位于com.mysql.cj.protocol.a.NativeAuthenticationProvider.connect(NativeAuthenticationProvider.java:202)
位于com.mysql.cj.protocol.a.NativeProtocol.connect(NativeProtocol.java:1449)
位于com.mysql.cj.NativeSession.connect(NativeSession.java:165)
位于com.mysql.cj.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:955)
位于com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:825)
... 9更多
原因:javax.net.ssl.SSLHandshakeException:没有合适的协议(协议被禁用或密码套件不合适)
位于java.base/sun.security.ssl.HandshakeContext。(HandshakeContext.java:170)
位于java.base/sun.security.ssl.ClientHandshakeContext.(ClientHandshakeContext.java:98)
位于java.base/sun.security.ssl.TransportContext.kickstart(TransportContext.java:221)
位于java.base/sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:433)
位于java.base/sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:411)
在com.mysql.cj.protocol.ExportControlled.performTlsHandshake上(ExportControlled.java:315)
位于com.mysql.cj.protocol.StandardSocketFactory.performTlsHandshake(StandardSocketFactory.java:188)
在com.mysql.cj.protocol.a.NativeSocketConnection.performTlsHandshake上(NativeSocketConnection.java:99)
位于com.mysql.cj.protocol.a.NativeProtocol.negotiateSSLConnection(NativeProtocol.java:352)

在服务器上,我可以使用密码登录mysql服务器。

Java最近开始默认禁用TLS 1.0和1.1。也许你正在使用其中的一个。在本地它正在工作。但当部署到服务器上时。它无法创建表。我检查过了,我可以从Java服务器连接到mysql服务器,也可以从Java服务器的终端创建表。但java代码在创建表时抛出错误。该错误告诉您问题在于无法通过建立安全连接。你没有提供足够的信息来尝试任何诊断,所以我投票结束这个问题。您需要调查您的部署场景。