SonarQube и Oracle 12C - PullRequest
       8

SonarQube и Oracle 12C

0 голосов
/ 31 августа 2018

Я пытаюсь настроить сервер SonarQube, используя официальный образ докера 7.1, соединяющийся с базой данных Oracle 12C 12.2.0.1 с набором символов AL32UTF8. Дело в том, что UTF8 устарела в oracle, и вместо этого они используют AL32UTF8, который почти такой же, но с большим пространством для хранения данных. При попытке запустить сервер гидролокатора выдается сообщение об ошибке: «Не удалось запустить веб-сервер: Oracle NLS_CHARACTERSET не поддерживает UTF8: WE8MSWIN1252». Я не могу найти какой-либо документ или обходные пути, чтобы решить эту проблему. Если кто-то имеет опыт этого или есть какие-либо подсказки, будет очень полезно. Я стою с этой проблемой и не могу найти решение. Заранее спасибо.

1 Ответ

0 голосов
/ 26 сентября 2018

Наконец-то удалось решить эту проблему, которая меня когда-то мучила. 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, чтобы устранить проблему. Надеюсь, это поможет кому-то там.

...