Reputation: 16
It has been driving me crazy recently, Hope anyone can help me on this.
I has been trying to connect to google cloud sql(second generation) from google app engine(spring boot app), but getting no luck. I follow the instruction on this page https://cloud.google.com/appengine/docs/flexible/java/using-cloud-sql to get the connection string. it was fine to connect to google cloud sql from my local computer.
Also, my app engine and google sql instance is from the same project. i also verified that i can connect to the google sql from goole app engine's cloud shell
I wonder which is the correct connection string to use. i tried both these connection template, but getting no luck
"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=${password}"
This is the log trace from google cloud:
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] Caused by: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure 2017-11-17 00:20:51 default[20171117t071753] 2017-11-17 00:20:51 default[20171117t071753] The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server. 2017-11-17 00:20:51 default[20171117t071753] at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[na:1.8.0_131] 2017-11-17 00:20:51 default[20171117t071753] at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) ~[na:1.8.0_131] 2017-11-17 00:20:51 default[20171117t071753] at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[na:1.8.0_131] 2017-11-17 00:20:51 default[20171117t071753] at java.lang.reflect.Constructor.newInstance(Constructor.java:423) ~[na:1.8.0_131] 2017-11-17 00:20:51 default[20171117t071753] at com.mysql.jdbc.Util.handleNewInstance(Util.java:425) ~[mysql-connector-java-5.1.43.jar!/:5.1.43] 2017-11-17 00:20:51 default[20171117t071753] at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:989) ~[mysql-connector-java-5.1.43.jar!/:5.1.43] 2017-11-17 00:20:51 default[20171117t071753] at com.mysql.jdbc.MysqlIO.(MysqlIO.java:341) ~[mysql-connector-java-5.1.43.jar!/:5.1.43] 2017-11-17 00:20:51 default[20171117t071753] at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2196) ~[mysql-connector-java-5.1.43.jar!/:5.1.43] 2017-11-17 00:20:51 default[20171117t071753] at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2229) ~[mysql-connector-java-5.1.43.jar!/:5.1.43] 2017-11-17 00:20:51 default[20171117t071753] at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2024) ~[mysql-connector-java-5.1.43.jar!/:5.1.43] 2017-11-17 00:20:51 default[20171117t071753] at com.mysql.jdbc.ConnectionImpl.(ConnectionImpl.java:779) ~[mysql-connector-java-5.1.43.jar!/:5.1.43] 2017-11-17 00:20:51 default[20171117t071753] at com.mysql.jdbc.JDBC4Connection.(JDBC4Connection.java:47) ~[mysql-connector-java-5.1.43.jar!/:5.1.43] 2017-11-17 00:20:51 default[20171117t071753] at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[na:1.8.0_131] 2017-11-17 00:20:51 default[20171117t071753] at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) ~[na:1.8.0_131] 2017-11-17 00:20:51 default[20171117t071753] at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[na:1.8.0_131] 2017-11-17 00:20:51 default[20171117t071753] at java.lang.reflect.Constructor.newInstance(Constructor.java:423) ~[na:1.8.0_131] 2017-11-17 00:20:51 default[20171117t071753] at com.mysql.jdbc.Util.handleNewInstance(Util.java:425) ~[mysql-connector-java-5.1.43.jar!/:5.1.43] 2017-11-17 00:20:51 default[20171117t071753] at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:389) ~[mysql-connector-java-5.1.43.jar!/:5.1.43] 2017-11-17 00:20:51 default[20171117t071753] at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:330) ~[mysql-connector-java-5.1.43.jar!/:5.1.43] 2017-11-17 00:20:51 default[20171117t071753] at org.apache.tomcat.jdbc.pool.PooledConnection.connectUsingDriver(PooledConnection.java:310) ~[tomcat-jdbc-8.5.16.jar!/:na] 2017-11-17 00:20:51 default[20171117t071753] at org.apache.tomcat.jdbc.pool.PooledConnection.connect(PooledConnection.java:203) ~[tomcat-jdbc-8.5.16.jar!/:na] 2017-11-17 00:20:51 default[20171117t071753] at org.apache.tomcat.jdbc.pool.ConnectionPool.createConnection(ConnectionPool.java:735) ~[tomcat-jdbc-8.5.16.jar!/:na] 2017-11-17 00:20:51 default[20171117t071753] at org.apache.tomcat.jdbc.pool.ConnectionPool.borrowConnection(ConnectionPool.java:667) ~[tomcat-jdbc-8.5.16.jar!/:na] 2017-11-17 00:20:51 default[20171117t071753] at org.apache.tomcat.jdbc.pool.ConnectionPool.init(ConnectionPool.java:482) ~[tomcat-jdbc-8.5.16.jar!/:na] 2017-11-17 00:20:51 default[20171117t071753] at org.apache.tomcat.jdbc.pool.ConnectionPool.(ConnectionPool.java:154) ~[tomcat-jdbc-8.5.16.jar!/:na] 2017-11-17 00:20:51 default[20171117t071753] at org.apache.tomcat.jdbc.pool.DataSourceProxy.pCreatePool(DataSourceProxy.java:118) ~[tomcat-jdbc-8.5.16.jar!/:na] 2017-11-17 00:20:51 default[20171117t071753] at org.apache.tomcat.jdbc.pool.DataSourceProxy.createPool(DataSourceProxy.java:107) ~[tomcat-jdbc-8.5.16.jar!/:na] 2017-11-17 00:20:51 default[20171117t071753] at org.apache.tomcat.jdbc.pool.DataSourceProxy.getConnection(DataSourceProxy.java:131) ~[tomcat-jdbc-8.5.16.jar!/:na] 2017-11-17 00:20:51 default[20171117t071753] at org.springframework.jdbc.datasource.DataSourceUtils.doGetConnection(DataSourceUtils.java:111) ~[spring-jdbc-4.3.10.RELEASE.jar!/:4.3.10.RELEASE] 2017-11-17 00:20:51 default[20171117t071753] at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:77) ~[spring-jdbc-4.3.10.RELEASE.jar!/:4.3.10.RELEASE] 2017-11-17 00:20:51 default[20171117t071753] ... 29 common frames omitted 2017-11-17 00:20:51 default[20171117t071753] Caused by: 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]
Upvotes: 0
Views: 528
Reputation: 124
In my application properties I am using jdbc:mysql://[host]:[port]/[dbname]?autoReconnect=true&useSSL=false for a url property and it works fine.
But it seems to me that your error is due to fact that you have to authorize IP address of your app-engine in authorization section of your cloud-sql instance.
Configuring IP Access on Cloud SQL instance
Upvotes: 0