【问题标题】:Can not connect to google cloud sql(second generation) from google app engine(spring boot app)无法从谷歌应用引擎(spring boot app)连接到谷歌云sql(第二代)
【发布时间】:2017-11-18 05:12:32
【问题描述】:

最近一直让我发疯,希望有人能帮助我。

我一直在尝试从谷歌应用引擎(春季启动应用)连接到谷歌云 sql(第二代),但没有成功。我按照此页面上的说明https://cloud.google.com/appengine/docs/flexible/java/using-cloud-sql 获取连接字符串。从我的本地计算机连接到谷歌云 sql 很好。

另外,我的应用引擎和 google sql 实例来自同一个项目。我还验证了我可以从 goole 应用引擎的云 shell 连接到 google sql

我想知道哪个是正确的连接字符串。我尝试了这两个连接模板,但没有运气

  • "jdbc:google:mysql://${INSTANCE_CONNECTION_NAME}/${database}?user=${user}&password=${password}"

  • "jdbc:mysql://google/${database}?useSSL=false&cloudSqlInstance=${INSTANCE_CONNECTION_NAME}&socketFactory=com.google.cloud.sql.mysql.SocketFactory&user=${user}&password=${密码}"

这是来自谷歌云的日志跟踪:

017-11-17 00:20:51 default[20171117t071753]     at java.lang.Thread.run(Thread.java:748) [na:1.8.0_131]

2017-11-17 00:20:51 default[20171117t071753] 引起:com.mysql.jdbc.exceptions.jdbc4.CommunicationsException:通信链路故障 2017-11-17 00:20:51 默认[20171117t071753] 2017-11-17 00:20:51 default[20171117t071753] 最后一个成功发送到服务器的数据包是 0 毫秒前。驱动程序没有收到来自服务器的任何数据包。 2017-11-17 00:20:51 默认 [20171117t071753] 在 sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[na:1.8.0_131] 2017-11-17 00:20:51 默认 [20171117t071753] 在 sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) ~[na:1.8.0_131] 2017-11-17 00:20:51 默认 [20171117t071753] 在 sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[na:1.8.0_131] 2017-11-17 00:20:51 默认 [20171117t071753] 在 java.lang.reflect.Constructor.newInstance(Constructor.java:423) ~[na:1.8.0_131] 2017-11-17 00:20:51 默认 [20171117t071753] 在 com.mysql.jdbc.Util.handleNewInstance(Util.java:425) ~[mysql-connector-java-5.1.43.jar!/:5.1.43 ] 2017-11-17 00:20:51 默认 [20171117t071753] 在 com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:989) ~[mysql-connector-java-5.1.43.jar!/:5.1.43 ] 2017-11-17 00:20:51 默认 [20171117t071753] 在 com.mysql.jdbc.MysqlIO.(MysqlIO.java:341) ~[mysql-connector-java-5.1.43.jar!/:5.1.43] 2017-11-17 00:20:51 默认 [20171117t071753] 在 com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2196) ~[mysql-connector-java-5.1.43.jar!/:5.1.43 ] 2017-11-17 00:20:51 默认 [20171117t071753] 在 com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2229) ~[mysql-connector-java-5.1.43.jar!/:5.1.43 ] 2017-11-17 00:20:51 默认 [20171117t071753] 在 com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2024) ~[mysql-connector-java-5.1.43.jar!/:5.1.43 ] 2017-11-17 00:20:51 默认 [20171117t071753] 在 com.mysql.jdbc.ConnectionImpl.(ConnectionImpl.java:779) ~[mysql-connector-java-5.1.43.jar!/:5.1.43] 2017-11-17 00:20:51 默认 [20171117t071753] 在 com.mysql.jdbc.JDBC4Connection.(JDBC4Connection.java:47) ~[mysql-connector-java-5.1.43.jar!/:5.1.43] 2017-11-17 00:20:51 默认 [20171117t071753] 在 sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[na:1.8.0_131] 2017-11-17 00:20:51 默认 [20171117t071753] 在 sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) ~[na:1.8.0_131] 2017-11-17 00:20:51 默认 [20171117t071753] 在 sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[na:1.8.0_131] 2017-11-17 00:20:51 默认 [20171117t071753] 在 java.lang.reflect.Constructor.newInstance(Constructor.java:423) ~[na:1.8.0_131] 2017-11-17 00:20:51 默认 [20171117t071753] 在 com.mysql.jdbc.Util.handleNewInstance(Util.java:425) ~[mysql-connector-java-5.1.43.jar!/:5.1.43 ] 2017-11-17 00:20:51 默认 [20171117t071753] 在 com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:389) ~[mysql-connector-java-5.1.43.jar!/:5.1.43 ] 2017-11-17 00:20:51 默认 [20171117t071753] 在 com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:330) ~[mysql-connector-java-5.1.43.jar!/:5.1.43 ] 2017-11-17 00:20:51 默认 [20171117t071753] 在 org.apache.tomcat.jdbc.pool.PooledConnection.connectUsingDriver(PooledConnection.java:310) ~[tomcat-jdbc-8.5.16.jar!/:na ] 2017-11-17 00:20:51 默认 [20171117t071753] 在 org.apache.tomcat.jdbc.pool.PooledConnection.connect(PooledConnection.java:203) ~[tomcat-jdbc-8.5.16.jar!/:na ] 2017-11-17 00:20:51 默认 [20171117t071753] 在 org.apache.tomcat.jdbc.pool.ConnectionPool.createConnection(ConnectionPool.java:735) ~[tomcat-jdbc-8.5.16.jar!/:na ] 2017-11-17 00:20:51 默认 [20171117t071753] 在 org.apache.tomcat.jdbc.pool.ConnectionPool.borrowConnection(ConnectionPool.java:667) ~[tomcat-jdbc-8.5.16.jar!/:na ] 2017-11-17 00:20:51 默认 [20171117t071753] 在 org.apache.tomcat.jdbc.pool.ConnectionPool.init(ConnectionPool.java:482) ~[tomcat-jdbc-8.5.16.jar!/:na ] 2017-11-17 00:20:51 默认 [20171117t071753] 在 org.apache.tomcat.jdbc.pool.ConnectionPool.(ConnectionPool.java:154) ~[tomcat-jdbc-8.5.16.jar!/:na] 2017-11-17 00:20:51 默认 [20171117t071753] 在 org.apache.tomcat.jdbc.pool.DataSourceProxy.pCreatePool(DataSourceProxy.java:118) ~[tomcat-jdbc-8.5.16.jar!/:na ] 2017-11-17 00:20:51 默认 [20171117t071753] 在 org.apache.tomcat.jdbc.pool.DataSourceProxy.createPool(DataSourceProxy.java:107) ~[tomcat-jdbc-8.5.16.jar!/:na ] 2017-11-17 00:20:51 默认 [20171117t071753] 在 org.apache.tomcat.jdbc.pool.DataSourceProxy.getConnection(DataSourceProxy.java:131) ~[tomcat-jdbc-8.5.16.jar!/:na ] 2017-11-17 00:20:51 默认 [20171117t071753] 在 org.springframework.jdbc.datasource.DataSourceUtils.doGetConnection(DataSourceUtils.java:111) ~[spring-jdbc-4.3.10.RELEASE.jar!/:4.3 .10.发布] 2017-11-17 00:20:51 默认 [20171117t071753] 在 org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:77) ~[spring-jdbc-4.3.10.RELEASE.jar!/:4.3 .10.发布] 2017-11-17 00:20:51 默认[20171117t071753] ...省略了 29 个常见框架 2017-11-17 00:20:51 默认[20171117t071753] 原因:java.net.UnknownHostException:google at java.net.InetAddress.getAllByName0(InetAddress.java:1280) ~[na:1.8.0_131] at java. net.InetAddress.getAllByName(InetAddress.java:1192) ~[na:1.8.0_131] at java.net.InetAddress.getAllByName(InetAddress.java:1126) ~[na:1.8.0_131] at com.mysql.jdbc。 StandardSocketFactory.connect(StandardSocketFactory.java:188) ~[mysql-connector-java-5.1.43.jar!/:5.1.43] at com.mysql.jdbc.MysqlIO.(MysqlIO.java:300) ~[mysql- connector-java-5.1.43.jar!/:5.1.43]

【问题讨论】:

    标签: java google-app-engine spring-boot google-cloud-sql


    【解决方案1】:

    在我的应用程序属性中,我使用 jdbc:mysql://[host]:[port]/[dbname]?autoReconnect=true&useSSL=false 作为 url 属性,它工作正常。

    但在我看来,您的错误是由于您必须在 cloud-sql 实例的授权部分授权应用引擎的 IP 地址。

    Configuring IP Access on Cloud SQL instance

    【讨论】:

    • 感谢 Pavle 抽出时间回答问题。您提到的是,如果我们从外部环境连接到 cloud-sql。另外,我刚刚发现我做错了什么,我们必须将打包设置为war而不是jar,并添加appengine-web.xml以将use-google-connector-j设置为true,这将指示google引擎使用谷歌连接器而不是 mysql-connector
    • 这是不正确的建议。从 App Engine 连接时,您不应通过 IP 进行连接,而应使用 App Engine 特定的连接,如下所述:cloud.google.com/sql/docs/mysql/connect-app-engine。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-02
    相关资源
    最近更新 更多