【问题标题】: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 即可解决问题。 希望这可以帮助那里的人。

    【讨论】:

      猜你喜欢
      • 2016-11-03
      • 2020-07-31
      • 1970-01-01
      • 1970-01-01
      • 2018-03-24
      • 2017-02-21
      • 2021-10-14
      • 2014-10-03
      • 2018-10-26
      相关资源
      最近更新 更多