当前位置: 首页 > 面试题库 >

com.mysql.jdbc.exceptions.jdbc4.CommunicationsException:

南门野
2023-03-14
问题内容

我有一个谷歌应用程序引擎连接的项目,我试图通过它连接到谷歌云sql数据库。我将项目上传到谷歌,然后通过它我尝试连接到数据库。

我的连接URL如下->

Class.forName("com.mysql.jdbc.GoogleDriver");
String password="";
    url = "jdbc:google:mysql://my-project-id:my-instance-name/dbname?user=root&password="+password+"useUnicode=true&characterEncoding=UTF-8";

    Connection conn = DriverManager.getConnecthtml" target="_blank">ion(url);

正是在我尝试与url建立连接的时候,我遇到了异常

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 packets from the server.

然后,我将以下字符串添加到url->&autoReconnect = true&failOverReadOnly = false&maxReconnects
= 10

然后收到另一个异常->

com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Could not create connection to database server. Attempted reconnect 10 times. Giving up.

我尝试对数据库实例的IP地址执行ping操作,并且工作正常。

我是否需要在我的云SQL实例中授予任何显式权限才能连接?

欢迎任何建议。

奇怪的是,我能够通过eclipse连接到数据库,方法是转到项目->谷歌->应用程序引擎-> usegoogle cloud
sql实例->配置。我使用相同的用户名(root)和密码(“ ),就像代码中的url一样,但是由于某种原因,它拒绝通过代码进行连接。我还启用了

<use-google-connector-j>true</use-google-connector-j>

在我的appengine-web.xml中标记

我将root密码从“”更改为某个值,并且可以通过mysql客户端进行连接,并且可以访问数据库,但是在代码中输入相同的密码后,它拒绝连接。

任何建议将不胜感激。谢谢劳拉


问题答案:

Instance Id默认情况下包含项目ID。因此,不要再次明确添加项目ID。

项目编号: sampleapp

实例ID :(sampleapp:instance1这是Google Cloud SQL默认创建的方式)

连接字符串:

正确:

jdbc:google:mysql://sampleapp:instance1/dbname?user=root&password="+password+"useUnicode=true&characterEncoding=UTF-8";

在正确的

jdbc:google:mysql://sampleapp:sampleapp:instance1/dbname?user=root&password="+password+"useUnicode=true&characterEncoding=UTF-8";


 类似资料: