【问题标题】:How do I access MySQL from CloudBees Jenkins?如何从 CloudBees Jenkins 访问 MySQL?
【发布时间】:2012-09-04 22:31:24
【问题描述】:

在 Jenkins CloudBees 中运行时,我无法弄清楚如何访问 MySQL 数据库。我试过关注Dev@Cloud MySQL,但控制台输出中有很多警告,我必须处理本地主机访问与套接字,如果没有命令行,调试起来非常棘手。

有没有办法使用 CloudBees MySQL 托管?当我尝试使用 cloudbees JDBC 驱动程序时,我收到 ClassNotFound 错误消息。

更新:下面的答案澄清了我不能使用 CloudBees 驱动程序,所以我现在通过 c3p0 连接池使用常规 MySQL 连接器。根据下面的 cmets,我将池中的连接数限制为 10。

当我从我的开发计算机运行它并连接到 Cloudbees Mysql 实例时,完全相同的配置和 Maven 命令行可以工作。

很遗憾,我在尝试连接时收到此错误:

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

任何想法都将不胜感激。

【问题讨论】:

  • 我不确定您所说的 CloudBees JDBC 驱动程序是什么意思。您应该能够使用 MySQL jdbc 驱动程序,并且一切都应该正常工作。
  • 我认为他指的是仅在 RUN@cloud 中有效的“特殊”jdbc URL 格式。他需要用 db server 主机名构造 MySQL URL

标签: mysql jenkins cloudbees


【解决方案1】:

您不能从 RUN@Cloud 容器外部使用 CloudBees JDBC 驱动程序,但您可以使用标准 MySQL JDBC 驱动程序和您的 RUN 数据库,使用您可以在 RUN@Cloud Web 控制台上找到的主机名和端口为您的数据库资源。

【讨论】:

  • 我想过。这可能是我自己的无知,但我们不会冒着 AWS 关闭我们的服务器并将其移动到另一个位置的风险吗?这不会导致手动配置头痛吗?
  • 我正在尝试此解决方案,但我不断收到此错误:“原因:com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:用户保证已拥有超过 'max_user_connections' 的活动连接”。我不认为这是我这边的代码问题,测试在本地运行良好。
  • 您的数据库被固定到 CloudBees 上的 IP 地址,因此即使服务器实例发生变化,您连接到它的方式也将是相同的。活动连接是一个单独的问题,可能应该在不同的线程上讨论。但要回答,您在共享数据库配置上最多只能有 20 个连接。如果您需要更多连接,请联系 sales@cloudbees.com 升级到专用服务器配置。
  • 感谢@swashbuck1r,这很奇怪,我的软件不应超过 20 个连接,但我会检查一下。也许我的连接池开箱即用地启动了那么多连接。你的权利,这是另一个主题的主题。
  • 我重新接受了这个答案并添加了我遇到的另一个问题,即我的测试泄漏了连接(事后看来很明显)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-07
  • 2016-08-15
相关资源
最近更新 更多