联机部署后Java JDBC通信链路故障

联机部署后Java JDBC通信链路故障,java,mysql,google-app-engine,jdbc,sqlexception,Java,Mysql,Google App Engine,Jdbc,Sqlexception,我在netbeans上使用JavaHttpServlet创建了我的第一个API。经过几天的工作,我终于可以将它连接到这个mySQL googleCloud数据库,并在本地获得结果。但一旦使用appengine在google云上发布此API,就会抛出以下错误: Error sqlException:com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure The last pa

我在netbeans上使用JavaHttpServlet创建了我的第一个API。经过几天的工作,我终于可以将它连接到这个mySQL googleCloud数据库,并在本地获得结果。但一旦使用appengine在google云上发布此API,就会抛出以下错误:

    Error sqlException: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.
但是mySQL数据库允许访问所有IP,那么会有什么问题呢?下面是我的代码:

public class HelloServlet extends HttpServlet {

    @Override
    public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {

        PrintWriter out = resp.getWriter();
        //out.println("Dear vistor, you are accessing my first project deployed on cloud. Thank you");

        try {

            Class.forName("com.mysql.jdbc.Driver");
            String url = String.format("jdbc:mysql://IP:3306/DatabaseName?useSSL=false&useUnicode=true&characterEncoding=UTF-8");
            Connection connection = DriverManager.getConnection(url, "userName", "Password");            
            try (Statement statement = connection.createStatement()) {
                ResultSet resultSet = statement.executeQuery("select test from tableTest;");
                while (resultSet.next()) {
                    out.println(resultSet.getString(1));
                }
            }
        } catch (ClassNotFoundException ex) {
            out.println("Error ClassNotFoundException:" + ex.toString());
        } catch (SQLException ex) {
            out.println("Error sqlException:" + ex.toString());
        }
        catch(Exception ex){
            out.println("Exception:" + ex.toString());
        }
    }   
}
更新:

基于,我发现在网上发布时不应该使用密码。因此,我已通过以下方式更新代码以使用jdbc google drive:

Class.forName("com.mysql.jdbc.GoogleDriver");

String url = String.format("jdbc:google:mysql://appId:instanceId/dbName?user=root");

Connection connection = DriverManager.getConnection(url);
但当我在网上发布时,同样的错误被抛出

更新2:

可能是因为我的appId包含“-”之类的“test-123”吗?但实际上,我正在以以下形式发送我的url:

url=“jdbc:google:mysql://test-123:myInstance/myDatabase?user=root&useUnicode=true&characterEncoding=UTF-8";