如何将 GAE 连接到 Amazon RDS?
How to connect GAE to Amazon RDS?
我在 Amazon RDS 上有一个配置的数据库实例:
我的 VPC 安全组,入站和出站配置如下:
我的 VPC DNS 解析和 DNS 主机名已激活。
我可以连接到这个实例并从 MySQLWorkbench 毫无问题地执行查询。
我正在使用 persistence.xml:
在我的 GAE Eclipse 中配置它
<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
我已经阅读了很多关于 Whosebug 的帖子、博客、问题和答案,但我没有弄清楚我做错了什么。
拜托,一旦我在过去整整一周内尝试修复它,任何建议、线索和提示将不胜感激。
谢谢大家!
我终于可以让它工作了!!这对我来说听起来很愚蠢,但对于可能遇到同样问题的人来说可能很有用。
项目及其配置的一切都很好,我唯一没有做的是 为我的项目 激活计费。
是的,您在 GAE 上创建帐户后立即激活您的计费帐户,但是当您创建项目时,您需要 LINK 您的项目计费到您创建的计费帐户.
就是这样。我希望它能帮助别人。
我在 Amazon RDS 上有一个配置的数据库实例:
我的 VPC 安全组,入站和出站配置如下:
我的 VPC DNS 解析和 DNS 主机名已激活。 我可以连接到这个实例并从 MySQLWorkbench 毫无问题地执行查询。 我正在使用 persistence.xml:
在我的 GAE Eclipse 中配置它 <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
我已经阅读了很多关于 Whosebug 的帖子、博客、问题和答案,但我没有弄清楚我做错了什么。
拜托,一旦我在过去整整一周内尝试修复它,任何建议、线索和提示将不胜感激。
谢谢大家!
我终于可以让它工作了!!这对我来说听起来很愚蠢,但对于可能遇到同样问题的人来说可能很有用。 项目及其配置的一切都很好,我唯一没有做的是 为我的项目 激活计费。
是的,您在 GAE 上创建帐户后立即激活您的计费帐户,但是当您创建项目时,您需要 LINK 您的项目计费到您创建的计费帐户.
就是这样。我希望它能帮助别人。