У меня есть экземпляр базы данных на Amazon RDS, настроенный:Как подключить GAE к Amazon RDS?
группаМои VPC безопасности, входящих и исходящих настроены, как показано ниже:
Мой VPC DNS Разрешение и DNS Hostnames. Я могу подключиться к этому экземпляру и выполнять запросы без проблем из 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, но я не понял, что я делаю неправильно.
Пожалуйста, любое предложение, подсказка, подсказка будет очень оценена, как только я попытаюсь исправить ее в течение последней целой недели.
Спасибо вам, ребята!
Несколько соображений: 1. Знайте, что Google Cloud SQL также предоставляет SQL на платформе Google, что может сделать вашу жизнь проще; 2. Вы определенно не должны разрешать весь трафик на всех портах со всех хостов - о, дорогая !; 3. «&» в ваших URL-адресах подключения в appengine-web.xml экранируется ('&') - что происходит, когда вы делаете его просто '&'? –