我有以下 Jenkins 版本和插件:
Jenkins 2.426.3
database:247.v244b_d85f086d
database-mysql:63.va_0596d2b_1438
mysql-api:8.4.0-31.va_b_5ce7933762
这是我连接到 mysql 数据库的代码:
Class.forName("com.mysql.cj.jdbc.Driver")
def url = 'jdbc:mysql://<host>:<port>/<db>'
def driver = 'com.mysql.cj.jdbc.Driver'
def sql = Sql.newInstance(url, "${username}", "${password}", driver)
失败并显示
No suitable driver found
。
从我在 stackoverflow 上阅读的所有问题/答案中,我认为失败的原因是 mysql-connector-java 驱动程序不在 CLASSPATH 中。
答案之一建议从 Jenkins 脚本控制台查找类路径,这是我发现的:
System.getProperty("java.class.path")
Result: /usr/lib/jenkins/jenkins.war
据我了解,jar文件打包在jenkins.war中。
我检查了
/var/lib/jenkins/war/WEB-INF/lib
中的内容,没有 mysql-connector-java 驱动程序(.jar 文件)。
我能够在
mysql-connector-j-8.4.0.jar
下找到/var/lib/jenkins/plugins/mysql-api/WEB-INF/lib/
和
database-mysql.jar
下/var/lib/jenkins/plugins/database-mysql/WEB-INF/lib/
我需要在哪里复制这些jar来摆脱
No suitable driver found
并连接到mysql?
您是否尝试过使用 database-mysql-plugin 提供的包装器?例如,查看他们的测试:
import org.jenkinsci.plugins.database.mysql.MySQLDatabase
MySQLDatabase database = new MySQLDatabase(
'foo.com:3306',
'database-name',
'user',
'password',
null)