我想在一个管道脚本中创建一个数据库,以供部署的应用程序使用。但首先我开始测试连接。我遇到了以下问题:
java.sql.SQLException: No suitable driver found for jdbc:mysql://mysql:3306/test_db
我安装了数据库插件和MySQL数据库插件。
如何获取JDBC驱动程序?
import groovy.sql.Sql
node{
def sql = Sql.newInstance("jdbc:mysql://mysql:3306/test_db", "user","passwd", "com.mysql.jdbc.Driver")
def rows = sql.execute "select count(*) from test_table;"
echo rows.dump()
}
在albciff回答后更新:
我的版本:
Jenkins = 2.19.1
Database plugin = 1.5
Mysql database plugin = 1.1
最新的测试脚本。
import groovy.sql.Sql
Class.forName("com.mysql.jdbc.Driver")
会掷回:
java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
3条答案
按热度按时间ql3eal8s1#
从MySQL DataBase Plugin文档中,您可以看到包含 MySQL 的 jdbc 驱动程序:
请注意MySQL JDBC驱动程序在GPLv 2下,但FOSS例外。此插件本身符合FOSS例外,但如果您要重新分发此插件,请务必检查许可条款。Drizzle(+MySQL)数据库插件可作为此插件的替代,并且该插件在BSD许可下。
更具体地说,此插件的实际最新版本(1.1)包含连接器版本5.1.38:
版本1.1(2016年5月21日)mysql-连接器版本5.1.38
所以可能为了让驱动程序可用,你必须强制驱动程序注册。
为此,请在代码中示例化连接之前使用
Class.forName("com.mysql.jdbc.Driver")
:更新日期:
为了在 Jenkins pipeline groovy脚本中提供 JDBC 连接器类,您需要将DataBase plugin更新为最新版本:
版本1.5(2016年5月30日)管道支持
ercv8c1e2#
您只需在Java类路径中添加Java连接器即可。
如果jenkins运行的是java〈9,你可能会在里面找到合适的位置:
<java_home>/jre/lib/ext
如果jenkins运行的是java〉= 9,你可能会在里面找到正确的位置:
/usr/share/jenkins/jenkins.war
要查找路径,您可以检查:
http://your.jenkins.host/systemInfo
(或通过GUI导航系统信息路径)并搜索java.ext.dirs
或java.class.path
http://your.jenkins.host/script
(运行控制台脚本,如System.getProperty("java.ext.dirs")
或System.getProperty("java.class.path")
)下面的代码片段可以帮助你在docker中运行jenkins.war:
qjp7pelc3#
对于在Java〉= 9上运行的Jenkins,在
${JENKINS_HOME}/war/WEB-INF/lib
和--webroot
目录下添加jdbc驱动程序。