Gerrit初始化失败:org.mariadb.jdbc.Driver不可用问题求助
你碰到的核心问题其实很明确:第一次初始化Gerrit时,它自动下载的MariaDB JDBC驱动包被你连同Gerrit目录一起删掉了,而第二次重新初始化时,Gerrit没能自动重新获取到这个驱动,导致数据库连接失败。
第一次初始化成功是因为Gerrit在配置数据库环节,会自动适配下载对应的JDBC驱动包,并存放在Gerrit安装目录的lib文件夹下。但你删除整个Gerrit目录后,这个驱动文件也被清理了;再加上Gerrit 2.14.6是比较老的版本,可能存在自动下载驱动失败的情况(比如网络限制、版本兼容匹配问题),所以就抛出了Driver class org.mariadb.jdbc.Driver not available的错误。
1. 手动下载适配的MariaDB JDBC驱动
Gerrit 2.14.6对新驱动兼容性不好,建议选择1.5.x系列的驱动包(比如mariadb-java-client-1.5.9.jar)。如果服务器能联网,直接用命令下载:
wget https://downloads.mariadb.com/Connectors/java/connector-java-1.5.9/mariadb-java-client-1.5.9.jar
如果服务器不能联网,就在本地Windows机器下载好驱动包,再用scp传到RHEL 7的/home/gerrit2目录下。
2. 提前部署驱动包再初始化
先手动创建Gerrit的lib目录,把驱动包放进去,这样初始化时Gerrit就能直接识别到:
mkdir -p /home/gerrit2/gerrit/lib cp mariadb-java-client-1.5.9.jar /home/gerrit2/gerrit/lib/
然后执行初始化命令:
java -jar gerrit-2.14.6.war init -d /home/gerrit2/gerrit
初始化过程中,遇到Canonical URL的提示时,直接输入服务器的IP地址(比如http://192.168.1.100:8080),这样就不用事后修改配置文件踩坑了。
3. 验证数据库连接(可选)
如果还是担心数据库配置有问题,可以先在服务器上测试MariaDB的连接是否正常:
mysql -u gerrit2 -p reviewdb
输入密码后能正常进入数据库,说明用户权限和密码都没问题。
4. 启动Gerrit服务
初始化完成后,启动服务:
/home/gerrit2/gerrit/bin/gerrit.sh start
之后用你配置的IP地址访问Gerrit,登录跳转就不会再指向主机名了。
内容的提问来源于stack exchange,提问作者T Lytle

