通过JDBC使用Compute Engine连接到Cloud SQL

如何解决通过JDBC使用Compute Engine连接到Cloud SQL

我无法通过Compute Engine连接到数据库

我到目前为止所做的事情:

  1. 设置我的Compute Engine
  2. 将Compute Engine连接到Cloud sql
  3. 在我的Compute Engine上安装并运行Cloud Proxy
  4. 在我的libs文件夹中包含JDBC Jar文件
  5. 创建了JDBC连接字符串

“ jdbc:MysqL:///?cloudsqlInstance =&socketFactory = com.google.cloud.sql.MysqL.socketFactory; user =&password =”;

  1. 添加了对我的Gradle文件的依赖

-实现filetree(dir:'libs',包括:['* .jar'])
-implementation'com.google.cloud.sqlMysqL-socket-factory-connector-j-8:1.1.0'

这是堆栈跟踪:

W / System.err:java.sql.sqlNonTransientConnectionException:无法 连接到localhost:3306上的MysqL服务器。 W / System.err:请确保 您所在的机器/端口上正在运行一个MysqL服务器 尝试连接到该软件正在运行的机器 能够连接到该主机/端口(即没有防火墙)。也使 确保未使用--skip-networking启动服务器 旗。 在com.MysqL.cj.jdbc.exceptions.sqlError.createsqlException(sqlError.java:110) 在com.MysqL.cj.jdbc.exceptions.sqlError.createsqlException(sqlError.java:97) 在com.MysqL.cj.jdbc.exceptions.sqlError.createsqlException(sqlError.java:89) 在com.MysqL.cj.jdbc.exceptions.sqlError.createsqlException(sqlError.java:63) W / System.err:位于 com.MysqL.cj.jdbc.exceptions.sqlError.createsqlException(sqlError.java:73) 在com.MysqL.cj.jdbc.ConnectionImpl。(ConnectionImpl.java:470) 在com.MysqL.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:246) W / System.err:位于 com.MysqL.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:197) 在java.sql.DriverManager.getConnection(DriverManager.java:569) 在java.sql.DriverManager.getConnection(DriverManager.java:237) W / System.err:位于 com.dedase.dedaseconstruction.ui.login.LoginActivity $ GetPatientID.doInBackground(LoginActivity.java:150) 在com.dedase.dedaseconstruction.ui.login.LoginActivity $ GetPatientID.doInBackground(LoginActivity.java:136) 在android.os.AsyncTask $ 2.call(AsyncTask.java:333) 在java.util.concurrent.FutureTask.run(FutureTask.java:266) 在android.os.AsyncTask $ SerialExecutor $ 1.run(AsyncTask.java:245) 在java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162) 在java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:636) W / System.err:位于java.lang.Thread.run(Thread.java:764) 引起原因:java.lang.NullPointerException:尝试调用虚拟方法'com.MysqL.cj.protocol.socketConnection com.MysqL.cj.protocol.a.NativeProtocol.getSocketConnection()' 空对象引用 在com.MysqL.cj.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:980) 在com.MysqL.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:826) W / System.err:位于 com.MysqL.cj.jdbc.ConnectionImpl。(ConnectionImpl.java:456) ...另外12位I / Choreographer:跳过了58帧!该应用程序可能在其主线程上做太多工作。 I /合子:执行完整代码 缓存收集,代码= 123KB,数据= 111KB 收集代码缓存后,代码= 117KB,数据= 78KB

解决方法

此行localhost:3,306.看起来非常可疑。您确定某个地方没有错字吗?
您可能遇到过这个repo,但它不是很准确。我没有手头的Java客户端来测试它,但是我确实将Cloud SQL与其他堆栈一起使用,使用Proxy的要点是您的应用程序通过它连接到DB,就像数据库本身在本地运行一样。您的连接字符串除了凭据和localhost:3306之外不应有其他任何内容。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?