mysql - 如何将 GAE 连接到 Amazon RDS?

标签 mysql google-app-engine amazon-web-services amazon-rds google-eclipse-plugin

我在 Amazon RDS 上配置了一个数据库实例:

Amazon RDS Instance

我的 VPC 安全组,入站和出站配置如下:

VPC Security Group

我的 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&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

我已经阅读了很多关于 stackoverflow 的帖子、博客、问题和答案,但我没有弄清楚我做错了什么。

拜托,一旦我在过去整整一周内尝试修复它,任何建议、线索和提示都将不胜感激。

谢谢你们!

最佳答案

我终于可以让它工作了!!这对我来说听起来很愚蠢,但对于可能遇到同样问题的人来说可能很有用。 项目及其配置的一切都很好,我唯一没有做的是为我的项目激活计费

是的,您在 GAE 上创建帐户后会立即激活您的计费帐户,但是当您创建项目时,您需要将您的项目计费链接到您创建的计费帐户。

就是这样。我希望它对其他人有帮助。

关于mysql - 如何将 GAE 连接到 Amazon RDS?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39972837/

相关文章:

php - APC 未在 Mac OS X 上为 google-app-engine 启用

amazon-web-services - Amazon MQ 和 SQS 之间有什么区别?

amazon-web-services - 尝试允许 lambda 使用基于 S3 资源的策略访问 S3,为什么它不起作用?

php - 通过嵌套 foreach 循环将数据从 PHP 插入到 Mysql

python - 在Python中,如何使用参数将用户转发到外部服务器?

php 具有相同数据库类的两个对象。 destruct 无法关闭第二个对象上的数据库连接

python - 将 python/django 应用程序部署到 gae

amazon-web-services - AWS 多 VPN 客户端证书

python - PyMYSQL - 选择值可以为 NULL 的位置

php - 一定数量的行后开始不同的计数 - php modulus