如何将GAE连接到Amazon RDS?

5
我在Amazon RDS上有一个数据库实例,已经配置好如下: Amazon RDS Instance 我的VPC安全组,入站和出站都配置如下: VPC Security Group 我的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&amp;password=******" />
    <property name="cloudsql.url" value="jdbc:mysql://myworld.cy3caqn3kkz0.eu-west-1.rds.amazonaws.com:3306/myworld?user=myworld&amp;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

我已经阅读了大量的帖子、博客、问题和答案,但我仍然不知道哪里做错了。

如果你有任何建议、线索或提示,将非常感激,因为我已经试图解决这个问题整整一周了。

谢谢大家!


一些想法:1. 请注意,Google Cloud SQL也在Google平台内提供SQL,这可能会让您的生活更轻松;2. 您绝对不应该允许来自所有主机的所有端口的所有流量 - 哦,亲爱的!; 3. 在appengine-web.xml中,连接URL中的“&”已被转义(“&amp;”) - 当您将其改为“&”时会发生什么? - Will Hayworth
1个回答

1
我终于让它运行起来了!! 对我来说听起来很蠢,但对于可能遇到同样问题的人有所帮助。 项目和配置都没问题,唯一没做的是激活我的项目账户的计费
是的,当你在GAE上创建一个账户时就开启了计费,但是当你创建一个项目后,你需要将你的项目计费与你创建的账户计费链接起来
就是这样。希望能帮助到其他人。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接