Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法通过Java eclipse连接到Google云SQL_Java_Google Cloud Datastore_Google Cloud Sql - Fatal编程技术网

无法通过Java eclipse连接到Google云SQL

无法通过Java eclipse连接到Google云SQL,java,google-cloud-datastore,google-cloud-sql,Java,Google Cloud Datastore,Google Cloud Sql,我使用我的实例google cloud sql数据库从eclipse连接到数据库时遇到问题。 我成功地通过mysql命令行访问了数据库,但在eclise中没有 我的代码: String instanceConnectionName = "****"; String databaseName = "****"; String username = "***"; String password = "***"; String jdbcUrl = String.format(

我使用我的实例google cloud sql数据库从eclipse连接到数据库时遇到问题。 我成功地通过mysql命令行访问了数据库,但在eclise中没有

我的代码:

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
jdbc:mysql://google/****?cloudSqlInstance=**e&socketFactory=com.google.cloud.sql.mysql.socketFactory
2017年5月3日上午10:53:07 com.google.cloud.sql.mysql.SocketFactory connect
信息:正在连接到云SQL实例[**]。
2017年5月3日上午10:53:07 com.google.cloud.sql.mysql.SslSocketFactory getInstance
信息:第一个云SQL连接,生成RSA密钥对。
线程“main”com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException中出现异常:无法创建到数据库服务器的连接。
位于sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法)
位于sun.reflect.NativeConstructorAccessorImpl.newInstance(未知源)
位于sun.reflect.delegatingConstructor或AccessorImpl.newInstance(未知源)
位于java.lang.reflect.Constructor.newInstance(未知源)
位于com.mysql.jdbc.Util.HandleneInstance(Util.java:404)
位于com.mysql.jdbc.Util.getInstance(Util.java:387)
位于com.mysql.jdbc.SQLError.createSQLException(SQLError.java:917)
位于com.mysql.jdbc.SQLError.createSQLException(SQLError.java:896)
位于com.mysql.jdbc.SQLError.createSQLException(SQLError.java:885)
位于com.mysql.jdbc.SQLError.createSQLException(SQLError.java:860)
位于com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2332)
位于com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2085)
位于com.mysql.jdbc.ConnectionImpl(ConnectionImpl.java:795)
位于com.mysql.jdbc.JDBC4Connection(JDBC4Connection.java:44)
位于sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法)
位于sun.reflect.NativeConstructorAccessorImpl.newInstance(未知源)
位于sun.reflect.delegatingConstructor或AccessorImpl.newInstance(未知源)
位于java.lang.reflect.Constructor.newInstance(未知源)
位于com.mysql.jdbc.Util.HandleneInstance(Util.java:404)
位于com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:400)
位于com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:327)
位于java.sql.DriverManager.getConnection(未知源)
位于java.sql.DriverManager.getConnection(未知源)
位于neviTracker.program.ProgramConnections.main(ProgramConnections.java:27)
原因:java.lang.RuntimeException:无法获取与云SQL API通信的凭据
位于com.google.cloud.sql.mysql.SslSocketFactory$ApplicationDefaultCredentialFactory.create(SslSocketFactory.java:545)
位于com.google.cloud.sql.mysql.SslSocketFactory.getInstance(SslSocketFactory.java:138)
位于com.google.cloud.sql.mysql.SocketFactory.connect(SocketFactory.java:47)
在com.mysql.jdbc.MysqlIO(MysqlIO.java:298)
位于com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2253)
位于com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2286)
... 还有13个
原因:java.io.IOException:应用程序默认凭据不可用。如果在谷歌应用程序引擎、谷歌计算引擎或谷歌云外壳上运行,则可以使用它们。否则,必须定义指向定义凭据的文件的环境变量GOOGLE\u APPLICATION\u CREDENTIALS。看见https://developers.google.com/accounts/docs/application-default-credentials 了解更多信息。
在com.google.api.client.googleapis.auth.oauth2.DefaultCredentialProvider.getDefaultCredential(DefaultCredentialProvider.java:98)
位于com.google.api.client.googleapis.auth.oauth2.GoogleCredential.getApplicationDefault(GoogleCredential.java:213)
位于com.google.api.client.googleapis.auth.oauth2.GoogleCredential.getApplicationDefault(GoogleCredential.java:191)
位于com.google.cloud.sql.mysql.SslSocketFactory$ApplicationDefaultCredentialFactory.create(SslSocketFactory.java:543)
... 还有18个

您收到一条错误消息,表明未设置环境变量
GOOGLE\u APPLICATION\u CREDENTIALS
。请在根文件夹中创建一个
.credentials
文件,并在其中添加您的凭据详细信息

请参考此链接

您收到一条错误消息,表明未设置环境变量
GOOGLE\u APPLICATION\u CREDENTIALS
。请在根文件夹中创建一个
.credentials
文件,并在其中添加您的凭据详细信息

请参考此链接

应用程序默认凭据不可用。如果在谷歌应用程序引擎、谷歌计算引擎或谷歌云外壳上运行,则可以使用它们。否则,必须定义指向定义凭据的文件的环境变量GOOGLE\u APPLICATION\u CREDENTIALS。有关更多信息,请参阅

您需要凭据才能访问google cloud sql。您可以从

创建凭证后,创建密钥文件并将其指向bash_配置文件(有关更多信息,请阅读块引号)。那么它应该会起作用

或者,您可以使用云SQL PROXY不使用环境变量,请按照此链接中的步骤操作,如果有不清楚的地方,请询问。

希望这有帮助

应用程序默认凭据不可用。如果在谷歌应用程序引擎、谷歌计算引擎或谷歌云外壳上运行,则可以使用它们。否则,必须定义指向定义凭据的文件的环境变量GOOGLE\u APPLICATION\u CREDENTIALS。有关更多信息,请参阅

您需要凭据才能访问google cloud sql。您可以从

创建凭证后,创建密钥文件并将其指向bash_配置文件(有关更多信息,请阅读块引号)。那么它应该会起作用

或者,您可以使用云SQL PROXY不使用环境变量,请按照此链接中的步骤操作,如果有不清楚的地方,请询问。


希望这有帮助。

您是否确保您的MySQL服务已启动并运行?是@patateskafadid,您是否确保