SonarQube 和 Oracle 12C

SonarQube and Oracle 12C

我正在尝试使用 7.1 docker 官方映像设置 SonarQube 服务器,并使用 AL32UTF8 字符集连接 Oracle 12C 12.2.0.1 数据库。问题是 UTF8 在 oracle 中已被弃用,取而代之的是他们使用 AL32UTF8,这几乎是一样的,但有更多 space 来存储数据。 尝试启动声纳服务器时出现错误:"web server startup failed: Oracle NLS_CHARACTERSET does not support UTF8: WE8MSWIN1252"。我找不到任何文档或解决方法来解决此问题。 如果有人有过这种经历或有任何线索,将会非常有帮助。我遇到了这个问题,找不到解决方案。 提前致谢。

终于解决了这个困扰我一段时间的问题。 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 即可解决问题。 希望这可以帮助那里的人。