首页 文章

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

提问于
浏览
1

我们正尝试使用Database Development透视图从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://我的应用程序内:我的 Cloud -SQL实例/ MYDATABASE

我得到的是:

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

添加连接并设置信息后,单击“测试连接”,该连接在本地实例上成功运行 . 但是,这会引发以下错误:

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测试正在通过,我也可能在此时遇到进一步的配置问题 . 尽管如此,我认为 Build 一个允许JUnit测试的Cloud SQL连接将是朝着正确方向迈出的一步 . 我很感激任何投入!

1 回答

  • 0

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

相关问题