2017-05-03 25 views
0

Googleクラウドsqlデータベースを使用してeclipseからデータベースに接続するのに問題があります。 私はmysqlコマンドラインでデータベースにアクセスすることに成功しましたが、ecliseではnoです。Java eclipse経由でGoogleクラウドSQLに接続できません

マイコード:

String instanceConnectionName = "****"; 
String databaseName = "****"; 
String username = "***"; 
String password = "***"; 

String jdbcUrl = String.format(
      "jdbc:mysql://google/%s?cloudSqlInstance=%s&" 
     + "socketFactory=com.google.cloud.sql.mysql.SocketFactory", 
      databaseName, 
      instanceConnectionName);   
Connection connection = DriverManager.getConnection(jdbcUrl, username, password); 

私が取得エラー:

jdbc:mysql://google/****?cloudSqlInstance=****e&socketFactory=com.google.cloud.sql.mysql.SocketFactory 

May 03, 2017 10:53:07 AM com.google.cloud.sql.mysql.SocketFactory connect 
INFO: Connecting to Cloud SQL instance [****]. 
May 03, 2017 10:53:07 AM com.google.cloud.sql.mysql.SslSocketFactory getInstance 
INFO: First Cloud SQL connection, generating RSA key pair. 
Exception in thread "main" com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Could not create connection to database server. 
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) 
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) 
at java.lang.reflect.Constructor.newInstance(Unknown Source) 
at com.mysql.jdbc.Util.handleNewInstance(Util.java:404) 
at com.mysql.jdbc.Util.getInstance(Util.java:387) 
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:917) 
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:896) 
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:885) 
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:860) 
at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2332) 
at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2085) 
at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:795) 
at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:44) 
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) 
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) 
at java.lang.reflect.Constructor.newInstance(Unknown Source) 
at com.mysql.jdbc.Util.handleNewInstance(Util.java:404) 
at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:400) 
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:327) 
at java.sql.DriverManager.getConnection(Unknown Source) 
at java.sql.DriverManager.getConnection(Unknown Source) 
at neviTracker.program.ProgramConnections.main(ProgramConnections.java:27) 
Caused by: java.lang.RuntimeException: Unable to obtain credentials to communicate with the Cloud SQL API 
at com.google.cloud.sql.mysql.SslSocketFactory$ApplicationDefaultCredentialFactory.create(SslSocketFactory.java:545) 
at com.google.cloud.sql.mysql.SslSocketFactory.getInstance(SslSocketFactory.java:138) 
at com.google.cloud.sql.mysql.SocketFactory.connect(SocketFactory.java:47) 
at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:298) 
at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2253) 
at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2286) 
... 13 more 

Caused by: java.io.IOException: The Application Default Credentials are not available. They are available if running on Google App Engine, Google Compute Engine, or Google Cloud Shell. Otherwise, the environment variable GOOGLE_APPLICATION_CREDENTIALS must be defined pointing to a file defining the credentials. See https://developers.google.com/accounts/docs/application-default-credentials for more information. 
at com.google.api.client.googleapis.auth.oauth2.DefaultCredentialProvider.getDefaultCredential(DefaultCredentialProvider.java:98) 
at com.google.api.client.googleapis.auth.oauth2.GoogleCredential.getApplicationDefault(GoogleCredential.java:213) 
at com.google.api.client.googleapis.auth.oauth2.GoogleCredential.getApplicationDefault(GoogleCredential.java:191) 
at com.google.cloud.sql.mysql.SslSocketFactory$ApplicationDefaultCredentialFactory.create(SslSocketFactory.java:543) 
... 18 more 
+0

あなたはあなたのMySQLサービスが稼動していることを確認しましたか? – patateskafa

+0

はい@patateskafa –

答えて

1

このリンクを参照してくださいアプリケーションのデフォルトクレデンシャルは使用できません。 Google App Engine、Google Compute Engine、Google Cloud Shellで実行している場合に利用できます。それ以外の場合は、環境変数GOOGLE_APPLICATION_CREDENTIALSを定義して、資格を定義するファイルを指定する必要があります。詳細は、https://developers.google.com/accounts/docs/application-default-credentialsを参照してください。

google cloud sqlにアクセスするには認証情報が必要です。 here

資格情報を作成したら、キーファイルを作成してbash_profileに指定します(詳細はブロック引用符を参照してください)。

また、CLOUD SQL PROXYを環境変数で使用できない場合は、このリンクの手順に従ってください。何かぼやけている場合は質問してください。 https://cloud.google.com/sql/docs/mysql/connect-admin-proxy

これが役に立ちます。

関連する問題