Почему операция Bluemix dashDB вызывает исключение SqlSyntaxErrorException с SQLCODE=-1667?

Я получаю эту ошибку, хотя я не пытаюсь редактировать таблицу/столбец:

com.ibm.db2.jcc.am.SqlSyntaxErrorException: Операция завершилась неудачно, так как операция не поддерживается для указанного типа таблицы. Указанная таблица: "DASH103985.wajihs". Тип таблицы: "ОРГАНИЗОВАТЬ ПО КОЛОННЕ". Операция: "С RS".. SQLCODE=-1667, SQLSTATE=42858

@MultipartConfig
public class DemoServlet extends HttpServlet {
  private static Logger logger = Logger.getLogger(DemoServlet.class.getName());
  private static final long serialVersionUID = 1L;
  @Resource(lookup="jdbc/db2")DataSource dataSource;

private String getDefaultText() {
  TweetsCombined = new String(" ");
  try {
    // Connect to the Database
    Connection con = null;
    try {
      System.out.println("Connecting to the database");
    } catch (SQLException e) {
      TweetsCombined = "first" +e;
    }

    // Try out some dynamic SQL Statements
    Statement stmt = null;

  try {
    stmt = con.createStatement();
    String tableName = "wajihs";// change table name here to one
                  // chosen in the first website
    String columnName = "msgBody";// msgBody is where the tweets
                                          // are stored
    String query = "SELECT * FROM \"" + tableName + "\"";
    ResultSet rs = stmt.executeQuery(query);

    while (rs.next()) {
      content = rs.getString(columnName) + ". ";
      if (content.toLowerCase().contains("RT".toLowerCase())
              || content.toLowerCase().contains("Repost: ".toLowerCase())) {
        // do nothing
      }
      else {
        TweetsCombined.concat(content);
      }

    }
    // Close everything off
    // Close the Statement
    stmt.close();
    // close
    con.commit();
    // Close the connection
    con.close();
  } catch (Exception e) {
    TweetsCombined = "second" +e;
    System.out.println(e.getMessage());
  }
} catch (Exception e) {
  TweetsCombined = "third" + e;
  System.out.println(e);
}
return TweetsCombined;

}


person MisT.    schedule 19.08.2015    source источник
comment
Вы просматривали документацию по значениям SQLCODE и SQLSTATE? Можете ли вы сказать нам, где в этом исходном файле запускается исключение? что ты уже испробовал?   -  person nitind    schedule 19.08.2015


Ответы (1)


Как я объяснил здесь, dashDB с функциями BLU Acceleration имеет определенные ограничения по сравнению с DB2 без BLU Acceleration. В вашем случае вы можете выполнять запросы только с уровнем изоляции CS к таблицам, организованным по столбцам.

Либо измените конфигурацию подключения, чтобы использовать уровень изоляции CS, либо создайте свои таблицы, явно указав ORGANIZE BY ROW.

person mustaccio    schedule 19.08.2015
comment
Спасибо, mustaccio, ваше объяснение спасло мой день! - person Nicole Naumann; 29.08.2016