2013-10-31 59 views
0

我在Ubuntu 13.10机器上用本地MySQL实例成功完成DataNucleus Tutorial for JDO using RDBMS如何获得DataNucleus SchemaTool与Google CloudSQL配合使用?

虽然试图在Google CloudSQL实例上得到相同的结果,但我遇到了一些问题。

要切换,我更换了以下内容:

<property name="javax.jdo.option.ConnectionURL" value="jdbc:mysql://127.0.0.1/nucleus?useServerPrepStmts=false"/> 
<property name="javax.jdo.option.ConnectionDriverName" value="com.mysql.jdbc.Driver"/> 

...有以下几点:

<property name="javax.jdo.option.ConnectionURL" value="jdbc:google:mysql://<my-project>:nucleus/nucleus?useServerPrepStmts=false"/> 
<property name="javax.jdo.option.ConnectionDriverName" value="com.mysql.jdbc.GoogleDriver"/> 

我设置本地MySQL和CLOUDSQL实例具有相同的凭据,所以不需要改变javax.jdo.option.ConnectionUserName和javax.jdo.option.ConnectionPassword。

在Google云端控制台Cloud SQL my-project:核心MySQL实例中,我创建了一个静态IP,并将我的开发机器的IP地址列入白名单。我证实我能够通过'mysql -u root -p -h'本地连接到它。

当我尝试运行“MVN DataNucleus将:模式创建”,我得到这个:

[DEBUG] Exit code: 1 
[DEBUG] -------------------- 
[DEBUG] Standard output from the DataNucleus tool org.datanucleus.store.schema.SchemaTool : 
[DEBUG] -------------------- 
[INFO] DataNucleus SchemaTool : Creation of the schema 
An error was encountered creating a PersistenceManagerFactory : Error creating transactional connection factory - please consult the log for more information. 

如果我有那么下面它的工作原理相同,与本地MySQL实例更换连接设置:

<property name="javax.jdo.option.ConnectionURL" value="jdbc:mysql://<Cloud SQL IP>/nucleus?useServerPrepStmts=false"/> 
<property name="javax.jdo.option.ConnectionDriverName" value="com.mysql.jdbc.Driver"/> 

所以,我解决问题的工作,但与GoogleDriver这项工作为什么没有?我对这位司机内部发生的黑魔法一无所知,但我很好奇是否有办法做到这一点,以及我是否有理由使用GoogleDriver。

+0

看看日志,然后告诉你为什么出现问题。谁知道“Google驱动程序”里面有什么 – DataNucleus

+0

对不起。我粘贴错误日志的错误部分(现在已更正)。我会去修改log4j的设置,看看我能不能把它吐出更多的信息。 – jpitt42

+0

那是控制台输出,而不是(DataNucleus)日志。 – DataNucleus

回答

1

现在您可以将库存MySQL驱动程序与Cloud SQL一起使用,您应该使用该驱动程序代替较早的GoogleDriver。

http://googlecloudplatform.blogspot.com/2013/10/google-cloud-sql-now-accessible-from-any-application-anywhere.html

希望这有助于 罗布

+0

感谢您的回答。我认为静态IP是可结算的,但我无法找到任何地方的情况。也许我把它和Google Compute Engine混淆了。 – jpitt42

+0

数据库未运行时,IP每小时$ 0.01。请参阅https://developers.google.com/cloud-sql/pricing上的“实例IP地址”一节。为您的CloudSQL实例分配IP是一项新功能,很可能您看到过时的文档。 –

0

特殊的谷歌JDBC驱动程序是从只有谷歌App Engine应用程序使用。在使用CloudSQL实例时,不需要一个静态公共IP地址,这是CloudSQL的一项可计费功能。

在阅读Google CloudSQL文档herehere后,这一切都变得明显。

相关问题