我们正尝试使用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 回答
您应该使用
jdbc:mysql://<cloudsql-instance-ip>:3306/<database-name>
从外部网络进行连接 . 您使用的连接字符串是从Google App Engine连接 .