无法在Google Cloud App Engine Std Env

时间:2018-02-05 06:05:48

标签: mysql jdbc google-cloud-sql

环境:

  1. Google云App Engine标准环境
  2. Google Cloud sql数据库实例(mysql)
  3. 安装步骤:

    1. 使用App Engine Java SDK 1.9.62使用appcfg update命令
    2. 部署Java Web应用程序war文件
    3. 在Google云端部署时作为部署安装的Jar文件: MySQL的连接器的Java-5.1.38.jar MySQL的插槽,出厂1.0.4.jar MySQL的插座工厂-COR-1.0.2.jar JDBC-插座工厂芯1.0.5.jar
    4. 使用Java的JDBC连接步骤:

      try {            
      //DriverManager.registerDriver(com.mysql.jdbc.Driver);  
      String DBUrl = String.format("jdbc:mysql://google/%s?cloudSqlInstance=%s&"
      + "socketFactory=com.google.cloud.sql.mysql.SocketFactory", 
      databaseName,instanceConnectionName);          
      Connection  DbConn = DriverManager.getConnection(DBUrl,DBUser,DBPwd);
      } catch(SQLException  ex)   {
      System.out.println("Database Connection Error."+ex.getMessage());
      }
      

      错误消息的步骤:

      使用project-id.appspot.com打开应用程序

      以下错误消息: 16-0无法创建与数据库服务器的连接。

      本地服务器上的数据库验证遵循的步骤:

      使用Java的JDBC连接步骤:

      try {            
      // -- Use cloud sql remote ip address say x.x.x.x  
      String DBUrl = String.format("jdbc:mysql://x.x.x.x:3306/%s",databaseName);          
      Connection  DbConn = DriverManager.getConnection(DBUrl,DBUser,DBPwd);
      } catch(SQLException  ex)   {
      System.out.println("Database Connection Error."+ex.getMessage());
      }
      
      1. 使用上述步骤与Gloud Cloud mysql数据库进行JDBC远程连接
      2. 在Windows上运行java Web应用程序
      3. 申请工作正常。
      4. 我花了两天时间尝试了各种步骤,显示了同样的错误。任何想法如何解决问题,或问题在哪里。

1 个答案:

答案 0 :(得分:2)

对Url连接字符串进行以下更改后,此问题得以解决。

代码更改:

try {            
Class.forName("com.mysql.jdbc.GoogleDriver");  
String DBUrl = String.format("jdbc:google:mysql://%s/%s", 
instanceConnectionName, databaseName);          
Connection  DbConn = DriverManager.getConnection(DBUrl,DBUser,DBPwd);
} catch(SQLException  ex)   {
System.out.println("Database Connection Error."+ex.getMessage());
}