如何将GAE连接到Amazon RDS?
问题描述:
我有被配置在Amazon RDS数据库实例:如何将GAE连接到Amazon RDS?
我的VPC安全组,入站和出站配置如下图所示:
我VPC DNS解析并且DNS主机名被激活。 我可以连接到这个实例并从MySQLWorkbench执行没有问题的查询。 我在我的GAE使用Eclipse中的persistence.xml配置它:
<persistence-unit name="myworld">
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider >
<!-- MODELS -->
...
<properties>
<property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/>
<property name="javax.persistence.jdbc.url" value="jdbc:mysql://myworld.cy3caqn3kkz0.eu-west-1.rds.amazonaws.com:3306/myworld"/>
<property name="javax.persistence.jdbc.user" value="myworld"/>
<property name="javax.persistence.jdbc.password" value="******"/>
<property name="eclipselink.target-database" value="org.eclipse.persistence.platform.database.MySQLPlatform" />
</properties>
而且我appengine_web.xml:
<threadsafe>true</threadsafe>
<system-properties>
<property name="java.util.logging.config.file" value="WEB-INF/logging.properties"/>
<property name="ae-cloudsql.cloudsql-database-url" value="jdbc:mysql://myworld.cy3caqn3kkz0.eu-west-1.rds.amazonaws.com:3306/myworld?user=myworld&password=******" />
<property name="cloudsql.url" value="jdbc:mysql://myworld.cy3caqn3kkz0.eu-west-1.rds.amazonaws.com:3306/myworld?user=myworld&password=******"/>
</system-properties>
我无法连接,当我执行查询在本地启动我的GAE项目,一切正常,但是当我在线部署时,我收到以下异常:
Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.5.1.v20130918-f2b9fc5): org.eclipse.persistence.exceptions.DatabaseException
Internal Exception: com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Could not create connection to database server.
Error Code: 0
我已经阅读了大量的帖子,博客,问题和答案在stackoverflow,但我没有弄清楚我做错了什么。
请在任何建议,线索,提示将非常感激,一旦我试图修复它的最后一个星期。
谢谢你们!
答
我终于可以得到它的工作!这对我来说听起来很愚蠢,但对于遇到同样问题的人可能会有用。 一切都很好,项目和他们的配置,我没有做的唯一的事情是激活我的PROJECT的开票。
是的,只要你在GAE上创建一个账户,你就激活了你的账单账户,但是当你创建一个你需要的项目时将你的项目账单链接到你创建的账单账户上。
就是这样。我希望它能帮助别人。
有几点想法:1.要知道Google Cloud SQL在Google的平台中也提供了SQL,这可能会让你的生活更轻松; 2.你绝对不应该允许所有主机的所有端口上的所有流量 - 哦,亲爱的! 3. appengine-web.xml中的连接URL中的'&'会被转义('&') - 当你把它变成'&'时会发生什么? –