MariaDB 10.11 CONNECT引擎迁移报错:JavaWrappers.jar未找到(文件已存在)
针对你遇到的错误,以下是具体排查步骤:
明确指定CONNECT类路径
即使jar文件放在plugin目录,JVM可能不会自动扫描该路径。手动设置全局类路径:SET GLOBAL connect_classpath='/usr/lib/mysql/plugin/JavaWrappers.jar:/usr/lib/mysql/plugin/mariadb-java-client-3.1.3.jar';设置后重新执行
ALTER TABLE sample ENGINE=InnoDB试试。验证JVM路径的有效性
确认connect_jvm_path指向的是完整的Java可执行文件路径,而非仅JVM目录。执行以下命令检查:SELECT @@global.connect_jvm_path;确保输出类似
/usr/lib/jvm/java-8-openjdk-amd64/bin/java,并且手动运行该路径的java命令能正常启动(比如/usr/lib/jvm/java-8-openjdk-amd64/bin/java -version)。检查权限的完整性
除了jar文件的读权限,还要确保父目录的执行权限:ls -ld /usr/lib/mysql/plugin ls -l /usr/lib/mysql/plugin/JavaWrappers.jar确保mysql进程的运行用户(通常为
mysql)对/usr/lib/mysql/plugin目录有执行权限,对jar文件有读权限。查看MariaDB错误日志
错误日志会记录JVM加载的详细失败原因,比如类加载异常、JVM启动失败等。日志路径通常为/var/log/mariadb/mariadb.log,搜索JavaWrappers相关条目,获取更具体的错误信息。测试CONNECT JDBC表的基础访问
先尝试直接查询JDBC连接表:SELECT * FROM sample_server1 LIMIT 1;如果这一步也报错,说明问题出在CONNECT的JDBC配置本身;如果正常,那ALTER TABLE时的类加载可能需要重新设置类路径或重启MariaDB服务。
检查版本兼容性
确认MariaDB 10.11与OpenJDK 8、mariadb-java-client 3.1.3的兼容性。可以尝试降级mariadb-java-client到2.7.x系列(与MariaDB 10.11版本更匹配),再测试是否解决问题。排查SELinux限制
如果是Linux系统,SELinux可能阻止mysql进程读取jar文件。临时关闭SELinux测试:setenforce 0若问题解决,需添加SELinux规则允许mysql访问该目录的jar文件。
内容的提问来源于stack exchange,提问作者Potion

