【问题标题】:SonarQube and Oracle 12CSonarQube 和 Oracle 12C
【发布时间】:2019-02-06 15:48:05
【问题描述】:
我正在尝试使用 7.1 docker 官方映像设置 SonarQube 服务器,该映像与具有 AL32UTF8 字符集的 Oracle 12C 12.2.0.1 数据库连接。问题是 UTF8 在 oracle 中已被弃用,取而代之的是他们使用 AL32UTF8,这几乎相同,但有更多空间来存储数据。
尝试启动声纳服务器时抛出错误:“Web 服务器启动失败:Oracle NLS_CHARACTERSET 不支持 UTF8:WE8MSWIN1252”。我找不到任何文档或解决方法来解决此问题。
如果有任何经验或有任何线索将非常有帮助。我有这个问题,找不到解决方案。
提前致谢。
【问题讨论】:
标签:
configuration
sonarqube
dockerhub
【解决方案1】:
终于能够解决这个曾经折磨我的问题。 Sonarqube 执行验证以确保数据库支持 UTF8 编码:
private void expectUtf8(Connection connection) throws SQLException {
String charset = this.getSqlExecutor().selectSingleString(connection, "select value from nls_database_parameters where parameter='NLS_CHARACTERSET'");
if (!StringUtils.containsIgnoreCase(charset, "utf8")) {
throw MessageException.of(String.format("Oracle NLS_CHARACTERSET does not support UTF8: %s", charset));
}
}
如果您看到问题中显示的错误,请在您的数据库上运行此查询:**select value from nls_database_parameters where parameter='NLS_CHARACTERSET'** 以找出您的数据库具有的字符集。
上一个查询得到的值用于检查字符集。在我的具体情况下,结果是 WE8MSWIN1252,这就是我收到该错误的原因。
因此,将 NLS_CHARACTERSET 设置为 AL32UTF8 即可解决问题。
希望这可以帮助那里的人。