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 символов.