DB2 'Строковая константа, начинающаяся с... слишком длинная' ошибка при вставке 40000 символов в поле CLOB(50000)

Я создал поле CLOB(50000) в таблице DB2 и убедился, что оно правильно создано с помощью

DB2 DESCRIBE TABLE dbname

... однако я получил следующее сообщение об ошибке, даже когда пытался вставить строку длиной 40 000 символов в поле:

 [IBM][CLI Driver][DB2/LINUXX8664] SQL0102N  The string constant beginning with
 "'''Testing Long Notes! Testing Long Notes! Testing Long Notes! Testing" is too long.  
 SQLSTATE=54002 SQLCODE=-102

'Тестирование длинных заметок!' это просто строка, которую я повторял снова и снова в поле HTML, чтобы построить строку длиной 40000. Затем PHP-скрипт обрабатывает опубликованную HTML-форму и пытается выполнить SQL INSERT, что приводит к ошибке.

Что мне здесь не хватает? Есть ли другое место, где установлен максимальный размер поля, который переопределяет настройку CLOB(50000)? Возможно, элемент конфигурации для управления размерами поля?

Я относительно новичок в DB2 после того, как клиент потребовал преобразования из MySQL.

1 ответ

Вам нужно использовать подготовленные операторы вместо того, чтобы объединять значения в запросе самостоятельно. Это также относится и к MySQL, так как подготовленные операторы защищают вас от внедрения SQL.

DB2 откажется обрабатывать необработанный запрос длиннее 32 000 символов.

Другие вопросы по тегам