Android应用连接MariaDB时遇CANON_EQ flag不支持错误求解决
解决MariaDB JDBC在Android中创建Statement时的CANON_EQ错误
问题原因
该错误源于MariaDB JDBC驱动创建Statement时,尝试使用Android环境不支持的Pattern.CANON_EQ正则表达式标志,通常和连接参数配置、驱动版本兼容性或类导入方式有关。
解决方法
1. 替换导入的Connection/Statement类
避免直接使用MariaDB的实现类,改用标准JDBC接口:
// 替换原有导入 import java.sql.Connection; import java.sql.Statement; // 移除以下两行: // import org.mariadb.jdbc.Connection; // import org.mariadb.jdbc.Statement;
2. 修改连接URL,添加兼容参数
在连接URL中加入usePipelineAuth=false,规避触发CANON_EQ的代码逻辑:
final String url = "jdbc:mariadb://" + db_address + ":" + String.valueOf(db_port) + "/" + db_name + "?usePipelineAuth=false";
3. 升级MariaDB JDBC驱动版本
确保使用兼容Android的最新稳定版驱动,在Module级别的build.gradle中更新依赖:
dependencies { implementation 'org.mariadb.jdbc:mariadb-java-client:3.3.3' // 可替换为最新稳定版本 }
4. 可选:使用带参数的createStatement重载方法
若上述方法无效,尝试指定结果集属性的重载方法替代无参createStatement():
statement = connection.createStatement(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY);
修改完成后重新运行代码,确认连接成功后可正常创建Statement并执行数据库查询。
内容的提问来源于stack exchange,提问作者YeS
相关产品推荐
相关产品推荐

