从Eclipse连接到Google Cloud SQL不使用App Engine

时间:2013-11-18 17:23:05

标签: google-app-engine google-cloud-sql

我们正尝试使用“数据库开发”透视图从Eclipse连接到Google Cloud SQL。为此,我正在尝试添加一个新的数据库连接,我能够成功地在我的机器上运行本地MySQL实例。

这样做的动机是我们当前对本地实例运行JUnit测试。但是,我们正在切换到Hibernate,并希望确保所有配置文件都能与Cloud SQL一起使用。作为我一直在使用的一般指南:

https://developers.google.com/appengine/articles/using_hibernate

我们正在略微分歧,因为我们使用的是hibernate.cfg.xml而不是persistence.xml,但我认为这实际上并不会影响当前只是连接数据库的问题。从另一个答案以及一些Google文档中我知道我无法使用com.google.appengine.api.rdbms.AppEngineDriver,因为这需要从AppEngine实例运行。相反,我试图按照这里的指示:

https://developers.google.com/cloud-sql/docs/external

我正在使用com.mysql.jdbc.Driver。

我已经为我的Cloud SQL实例分配了一个IP地址,并将我当前的IP地址添加到白名单中,如下所述:

https://developers.google.com/cloud-sql/docs/access-control#appaccess

我的驱动程序是我已成功使用本地实例的Connector / J驱动程序,我正在使用的URL是:

JDBC:谷歌:RDBMS://我的应用内:我的云-SQL实例/ MYDATABASE

我的基础是:

https://developers.google.com/appengine/articles/using_hibernate

添加连接并设置信息后,我单击Test Connection,它在我的本地实例上成功运行。但是,这会引发以下错误:

java.lang.Exception: Connection failed with unspecified error.
    at org.eclipse.datatools.connectivity.DriverConnectionBase.internalCreateConnection(DriverConnectionBase.java:110)
    at org.eclipse.datatools.connectivity.DriverConnectionBase.open(DriverConnectionBase.java:54)
    at org.eclipse.datatools.connectivity.drivers.jdbc.JDBCConnection.open(JDBCConnection.java:73)
    at org.eclipse.datatools.enablement.internal.mysql.connection.JDBCMySQLConnectionFactory.createConnection(JDBCMySQLConnectionFactory.java:28)
    at org.eclipse.datatools.connectivity.internal.ConnectionFactoryProvider.createConnection(ConnectionFactoryProvider.java:83)
    at org.eclipse.datatools.connectivity.internal.ConnectionProfile.createConnection(ConnectionProfile.java:359)
    at org.eclipse.datatools.connectivity.ui.PingJob.createTestConnection(PingJob.java:76)
    at org.eclipse.datatools.connectivity.ui.PingJob.run(PingJob.java:59)
    at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53)

显然这不是很有帮助。

我试过摆弄网址,尝试了一些用户(没有一个需要密码,所以我将密码字段留空),以及不同版本的MySQL驱动程序的不同版本。没有任何效果。

使用这种方式可能存在更多根深蒂固的问题,例如我将如何在hibernate.cfg.xml的测试和部署版本之间轻松切换,而且我没有很好的答案。我只是计划将它们手动编辑回AppEngineDriver,这意味着即使JUnit测试正在通过,我也可能在此时遇到进一步的配置问题。尽管如此,我认为建立一个允许JUnit测试的Cloud SQL连接将是朝着正确方向迈出的一步。我很感激任何投入!

1 个答案:

答案 0 :(得分:0)

您应该使用jdbc:mysql://<cloudsql-instance-ip>:3306/<database-name>从外部网络进行连接。您使用的连接字符串是从Google App Engine连接。