Как получить доступ к MySQL из CloudBees Jenkins?

Я не могу понять, как получить доступ к базе данных MySQL во время работы в Jenkins CloudBees. Я пробовал следовать Dev @ Cloud MySQL, но есть много предупреждений в выводе консоли, и мне приходится иметь дело с доступом к локальному хосту и сокетами, что довольно сложно отлаживать без командной строки.

Есть ли способ использовать хостинг CloudBees MySQL? Когда я пытаюсь использовать драйвер JDBC cloudbees, я получаю сообщения об ошибках ClassNotFound.

Обновление. В приведенном ниже ответе поясняется, что я не могу использовать драйвер CloudBees, поэтому теперь я использую обычный коннектор MySQL через пул соединений c3p0. Основываясь на комментариях ниже, я ограничил количество подключений в пуле до 10.

Точно такая же конфигурация и командная строка Maven работают, когда я запускаю ее со своего компьютера разработки, подключающегося к экземпляру Cloudbees Mysql.

К сожалению, я получаю эту ошибку при попытке подключения:

Caused by: com.googlecode.flyway.core.exception.FlywayException: Unable to obtain Jdbc connection from DataSource
    at com.googlecode.flyway.core.util.jdbc.JdbcUtils.openConnection(JdbcUtils.java:56)
    at com.googlecode.flyway.core.Flyway.execute(Flyway.java:864)
    at com.googlecode.flyway.core.Flyway.migrate(Flyway.java:591)
    at com.assuredlabor.db.DatabaseMigrator.migrate(DatabaseMigrator.java:13)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeCustomInitMethod(AbstractAutowireCapableBeanFactory.java:1414)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1375)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1335)
    ... 62 more
Caused by: java.sql.SQLException: Connections could not be acquired from the underlying database!
    at com.mchange.v2.sql.SqlUtils.toSQLException(SqlUtils.java:106)
    at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool.checkoutPooledConnection(C3P0PooledConnectionPool.java:529)
    at com.mchange.v2.c3p0.impl.AbstractPoolBackedDataSource.getConnection(AbstractPoolBackedDataSource.java:128)
    at com.googlecode.flyway.core.util.jdbc.JdbcUtils.openConnection(JdbcUtils.java:50)
    ... 72 more
Caused by: com.mchange.v2.resourcepool.CannotAcquireResourceException: A ResourcePool could not acquire a resource from its primary factory or source.
    at com.mchange.v2.resourcepool.BasicResourcePool.awaitAvailable(BasicResourcePool.java:1319)
    at com.mchange.v2.resourcepool.BasicResourcePool.prelimCheckoutResource(BasicResourcePool.java:557)
    at com.mchange.v2.resourcepool.BasicResourcePool.checkoutResource(BasicResourcePool.java:477)
    at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool.checkoutPooledConnection(C3P0PooledConnectionPool.java:525)
    ... 74 more

Любые идеи поощряются.


person JBCP    schedule 11.09.2012    source источник
comment
Я не уверен, что вы имеете в виду под драйвером JDBC CloudBees. Вы должны просто уметь использовать драйверы MySQL jdbc, и все должно работать.   -  person recampbell    schedule 12.09.2012
comment
Я думаю, он имеет в виду специальный формат URL-адресов jdbc, который работает только в RUN @ cloud. Ему нужно создать URL-адрес MySQL с именем хоста сервера db.   -  person Stephen Connolly    schedule 12.09.2012


Ответы (1)


Вы не можете использовать драйвер JDBC CloudBees вне контейнера RUN @ Cloud, но вы можете использовать стандартный драйвер JDBC MySQL с вашей базой данных RUN, используя имя хоста и порт, которые вы можете найти в веб-консоли RUN @ Cloud для вашего ресурса БД.

person nicolas de loof    schedule 12.09.2012
comment
Я думала об этом. Возможно, это мое собственное невежество, но разве мы не рискуем, что AWS отключит наш сервер и переместит его в другое место? Разве это не вызовет головную боль ручной настройки? - person JBCP; 12.09.2012
comment
Я пробую это решение, но продолжаю получать эту ошибку: вызвано: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: пользователь уверен, что уже имеет больше, чем «max_user_connections» активных подключений. Я не думаю, что это проблема кода на моей стороне, тесты работают нормально локально. - person JBCP; 12.09.2012
comment
Ваша база данных привязана к IP-адресу на CloudBees, поэтому даже если экземпляр сервера изменится, способ подключения к нему будет таким же. Активные соединения - это отдельная тема, которую, вероятно, следует обсудить в другой теме. Но чтобы ответить, вы ограничены 20 подключениями в конфигурации общей базы данных. Если вам нужно больше подключений, свяжитесь с [email protected], чтобы перейти на конфигурацию выделенного сервера. - person swashbuck1r; 13.09.2012
comment
Спасибо @ swashbuck1r, странно, моя программа не должна делать больше 20 подключений, но я проверю. Возможно, мой пул подключений запускает такое количество подключений из коробки. Ваше право, это тема для другой ветки. - person JBCP; 13.09.2012
comment
Я повторно принял этот ответ и добавил еще одну проблему, с которой я столкнулся, а именно то, что в моих тестах происходила утечка соединений (что-то очевидно в ретроспективе) - person JBCP; 20.10.2012