我正在尝试使用7.1 docker官方镜像设置一个SonarQube服务器,该镜像使用AL32UTF8字符集连接Oracle12C 12.2.0.1数据库。问题是,UTF8在oracle中已被弃用,取而代之的是AL32UTF8,这几乎相同,但有更多的空间来存储数据。尝试启动声纳服务器时抛出错误:"web服务器启动失败: Oracle NLS_CHARACTERSET不支持UTF8: WE8MSWIN1252“。我找不到任何文档或解决方法来解决此问题。如果有人有这样的经历或有任何线索,将是非常有帮助的。我受够了这个问题,找不到解决办法。提前谢谢。
发布于 2018-09-26 10:44:29
终于能够解决这个困扰我的问题了。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修复问题。希望这能帮助到外面的人。
https://stackoverflow.com/questions/52118368
复制相似问题