2013-11-18 1 views
1

Мы пытаемся подключиться к Google Cloud SQL из Eclipse, используя перспективу Database Development. Для этого я пытаюсь добавить новое соединение с базой данных, которое я смог успешно выполнить для локального экземпляра MySQL, запущенного на моей машине.Подключение к Google Cloud SQL из Eclipse Неиспользуемый движок App

Мотивация для этого заключается в том, что мы в настоящее время выполняем наши тесты JUnit против локального экземпляра. Однако мы переходим на Hibernate и хотим, чтобы все наши файлы конфигурации работали с Cloud SQL. В качестве общего руководства я использую:

https://developers.google.com/appengine/articles/using_hibernate

Мы расходящимися немного в том, что мы используем hibernate.cfg.xml вместо persistence.xml, но я не думаю, что это будет на самом деле имеют отношение к текущей проблеме простого подключения к базе данных. Из другого ответа, а также некоторых документов Google я знаю, что я не могу использовать com.google.appengine.api.rdbms.AppEngineDriver, потому что это нужно запускать из экземпляра AppEngine. Вместо этого я пытаюсь следовать инструкциям здесь:

https://developers.google.com/cloud-sql/docs/external

и использую com.mysql.jdbc.Driver.

Я назначен свой экземпляр Cloud SQL IP-адрес и добавил мой текущий адрес IP-в белый список, как описано здесь:

Мой водитель Коннектор водитель/J Я был успешно используют с локальным экземпляром, и URL я использую:

JDBC: Google: RDBMS: // мой-приложение: мое облако-SQL-экземпляр/MyDatabase

, который я получил на основе :

https://developers.google.com/appengine/articles/using_hibernate

После добавления подключения и настройки информации я нажимаю Test Connection, который успешно работал на моем локальном экземпляре. Однако это вызывает следующую ошибку:

java.lang.Exception: Connection failed with unspecified error. 
    at org.eclipse.datatools.connectivity.DriverConnectionBase.internalCreateConnection(DriverConnectionBase.java:110) 
    at org.eclipse.datatools.connectivity.DriverConnectionBase.open(DriverConnectionBase.java:54) 
    at org.eclipse.datatools.connectivity.drivers.jdbc.JDBCConnection.open(JDBCConnection.java:73) 
    at org.eclipse.datatools.enablement.internal.mysql.connection.JDBCMySQLConnectionFactory.createConnection(JDBCMySQLConnectionFactory.java:28) 
    at org.eclipse.datatools.connectivity.internal.ConnectionFactoryProvider.createConnection(ConnectionFactoryProvider.java:83) 
    at org.eclipse.datatools.connectivity.internal.ConnectionProfile.createConnection(ConnectionProfile.java:359) 
    at org.eclipse.datatools.connectivity.ui.PingJob.createTestConnection(PingJob.java:76) 
    at org.eclipse.datatools.connectivity.ui.PingJob.run(PingJob.java:59) 
    at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) 

Очевидно, что это не очень полезно.

Я пробовал возиться с URL-адресом, попробовал несколько пользователей (ни один из которых не требует паролей, поэтому я оставляю поля пароля пустыми) и разные версии драйвера для разных версий MySQL. Ничего не сработало.

Возможно, существуют более глубокие проблемы с этим, например, как легко переключаться между тестовыми версиями и версиями развертывания моего hibernate.cfg.xml, и у меня нет хороших ответов. Я просто планировал их вручную редактировать в AppEngineDriver, что означает, что я могу столкнуться с дополнительными проблемами конфигурации в этот момент, даже если тесты JUnit проходят. Тем не менее, я думаю, что получение соединения, настроенного на Cloud SQL, что позволит тестировать JUnit, станет шагом в правильном направлении. Буду признателен за любой вклад!

+0

Итак, где вы вводите IP-адрес облачного sql-экземпляра, который вы пытаетесь подключить? Я считаю, что эта строка соединения (которая использует ваше имя экземпляра sql sql) будет работать только с AppEngine. –

+0

Какой я doofus. Это была проблема. Это утешительно тем, что соединительная строка теперь кажется значительно менее непрозрачной. Рабочий URL-адрес: «jdbc: mysql: // myCloudSqlIpAddress: 3306/myDatabaseName». Хуан, если вы добавите свой комментарий в качестве решения, я приму ответ. – user1978019

ответ

0

Чтобы подключиться к внешней сети, вы должны использовать jdbc:mysql://<cloudsql-instance-ip>:3306/<database-name>. Строка подключения, которую вы используете, - это подключение от Google App Engine.

 Смежные вопросы

  • Нет связанных вопросов^_^