Как обнаружить обрезание строки

Я использую jTDS 1.2.6 для подключения Adaptive Server Enterprise/15.7.0. Когда подготовленный оператор вставляет строки в таблицу с VARCHAR(16) столбец, строки молча усечены. Вставка прошла успешно, предупреждений нет и нет DataTruncation Возникает исключение, тогда как закодированная строка усекается до 16 октетов.

Как я могу обнаружить усечение строки?

1 ответ

Решение

Adaptive Server усекает записи до указанной длины столбца без предупреждения или ошибки, если вы не укажете string_rtruncation on, См. Справочное руководство: Команды.

MSSQL всегда обнаруживает усечение строк, и опция STRING_RTRUNCATION не существует. Вот выдержка из jTDS SAfeTest.testDataTruncException()

Statement stmt = con.createStatement();
if (!con.getMetaData().getDatabaseProductName().toLowerCase().startsWith("microsoft")) {
    // By default Sybase will silently truncate strings,
    // set an option to ensure that an exception is thrown.
     stmt.execute("SET STRING_RTRUNCATION ON");
}
Другие вопросы по тегам