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 即可解决问题。
希望这可以帮助那里的人。
我正在尝试使用 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 即可解决问题。
希望这可以帮助那里的人。