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

App Engine Java Servlet无法连接到Cloud SQL

尚嘉勋
2023-03-14
问题内容

我已经使用应用引擎创建了一个Java Web
Servlet,该Servlet向数据库发出了请求。我已经使用本地数据库在本地测试了servlet,并且运行良好,然后继续在本地测试了servlet,但是我访问了Cloud
SQL数据库,但是也运行得很好。

我部署servlet后出现了我的问题。部署后,所有数据库请求都将返回以下内容:

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.

我在云控制台中进行了检查,并且我的应用已正确添加到访问控制选项卡下的云SQL授权的App Engine应用中。

是否有人在部署的应用程序引擎servlet中遇到类似的问题?有解决方案或建议吗?我将不胜感激!

更新:

上面的错误是使用以下代码访问数据库生成的

Class.forName("com.mysql.jdbc.Driver");
Url = "jdbc:mysql://<ip-address-cloudsql>:3306/<dbname>";
Connection con = DriverManager.getConnection (Url,"root",<password>);

使用此代码也可以得到相同的错误,请注意,它与此处示例中显示的代码非常相似https://developers.google.com/appengine/docs/java/cloud-
sql/

Class.forName("com.mysql.jdbc.GoogleDriver");
Url = "jdbc:google:mysql://<appID:instanceID>/<dbname>? 
user=root&password=<password>";
Connection con = DriverManager.getConnection (Url);

当我使用appid和实例ID设置url时,我遵循了这个stackoverflow帖子中显示的格式设置技巧:
com.mysql.jdbc.exceptions.jdbc4.CommunicationsException:

使用此代码会导致以下不同的错误:

java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES)

我假设它说的是localhost,因为我的cloudsql数据库设置为遵循应用引擎servlet。另外,请知道当在本地运行servlet并访问cloud
sql数据库时,这两种方法都可以正常工作。

有什么想法吗?我不知道还能尝试什么:[


问题答案:

从授权的App Engine应用程序连接到Cloud SQL时,不需要密码(实际上,如果尝试使用密码连接,密码将失败)。

更改连接字符串以jdbc:google:mysql://<appID:instanceID>/<dbname>? user=root省略该&password=<password>部分



 类似资料:
  • 问题内容: 我正在尝试使用Ruby on Rails运行Selenium的示例脚本。我必须使用代理运行它。这是我的代码: 我收到以下错误: 有人能帮我吗…?我已经尝试了好几个小时,却找不到问题…真的不知道该怎么办。 环境: Ubuntu 16.04 LTS,Firefox 45.0,rbenv 2.3.1 另一个问题:有人知道Selenium + Ruby on Rails的示例吗?我找不到真正好

  • 我正在尝试连接到MySQL服务器,但出现无法处理的错误。 java.sql.SQLNonTransientConnectionException:无法创建到数据库服务器的连接。尝试重新连接3次。放弃。com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:110)com.mysql.cj.jdbc.excepti

  • 我真的想不通为什么我不能用下面的代码连接到我的Django项目内的JQuery。你能告诉我是什么原因吗?多谢! null null

  • 我正在尝试使用Android studio提供的工具将我的Android应用程序连接到firebase,但我面临着很多麻烦。 我已经尝试更新依赖到最新的最新的谷歌服务,但错误仍然存在,显示的错误是无法解析Android应用模块的Gradle配置。解决分级生成问题和/或重新同步。 分级/应用程序a

  • 我正在开发Selenium,目前我有一个连接到两个运行linux和所有浏览器的虚拟机的集线器。 我能够启动浏览器,直到它突然停止。火狐或任何其他浏览器都不会启动。我得到以下错误。 45000 ms后无法连接到端口7055上的主机127.0.0.1。 我运行Selenium服务器独立2.26与火狐16.0.2. 请帮忙。

  • Q-我安装了git以获取最新版本的Angular。当我尝试运行时 我连接到github 443错误失败 我甚至试过 这使我无法连接,没有错误消息。 我在公司防火墙后面。转到控制面板时,我看不到我的代理详细信息- 我终于做到了。我将更新我所采取的程序,以便只是想编译我所做的所有步骤,以使它正常工作

  • 我试图使用将一些更改推送到github,但一段时间后它显示错误 我刚刚创建了回购协议,已经promise了两次。我通过Mac OS X Yosemite 10.10.2中的家庭WiFi和操作系统连接到互联网。

  • 输入JDBC的用户名:hive2://localhost:10001/default:输入JDBC的密码:hive2:/localhost:10001/default:17/08/19 09:25:14[main]:警告JDBC.hiveConnection:无法连接到localhost:10001无法打开到HS2服务器的连接。请检查服务器URI,如果URI正确,请让管理员检查服务器状态。错误:无