【发布时间】:2017-08-22 14:04:52
【问题描述】:
我正在使用一种内部自动化工具来填充配置文件。由于该工具的一些问题,我不得不对 URL 字符串值进行编码:
sonar.jdbc.url=jdbc:mysql://<server>:3306/sonar_db?useUnicode=true%26characterEncoding=utf8%26rewriteBatchedStatements=true%26useConfigs=maxPerformance
但是当我这样做时,得到异常:
原因:org.apache.commons.dbcp.SQLNestedException:无法创建 PoolableConnectionFactory(仅限连接属性“useUnicode” 接受以下形式的值:“真”、“假”、“是”或“否”。价值 'true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance' 不在此集合中。)
【问题讨论】:
-
我看不出你是如何“编码”任何东西的。在我看来,您的内部工具似乎无法正确解析事物。如果没有使用的代码,那将是盲目的猜测。您可以通过用分号 (
;) 分隔来使其工作,但这是假设?之后的所有内容都被盲目地传递给 DBCP 配置属性connectionProperties(还要确保包括结束;) -
对不起,我的 jdbc uri 错误,我已经更新了。
-
如果这是由
Properties或ResourceBundle读取的属性文件,您应该使用反斜杠来转义=。服务器不会像你想要的那样理解%26。如果确实存在问题,请修复该工具,这似乎不太可能。 -
谢谢大家,我最终不得不在工具本身中解决这个问题,找不到任何其他替代方案