Я создал поле CLOB (50000) в таблице DB2 и проверил, что оно правильно создано с помощью
DB2 DESCRIBE TABLE dbname
... однако я получил следующее сообщение об ошибке даже при попытке вставить в поле строку из 40000 символов:
[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, чтобы получить длину строки 40 000. Затем скрипт PHP обрабатывает опубликованную HTML-форму и пытается выполнить SQL INSERT, что приводит к ошибке.
Что мне здесь не хватает? Есть ли другое место, где установлен максимальный размер поля, который отменяет настройку CLOB (50000)? Возможно, элемент конфигурации для управления размерами полей?
Я относительно новичок в DB2 после того, как клиенту потребовалось преобразование из MySQL.
Вам нужно использовать подготовленные заявления вместо того, чтобы объединять значения в запрос самостоятельно. Это также относится к MySQL как к хорошей практике - подготовленные операторы защищают вас от SQL-инъекции.
DB2 откажется обрабатывать необработанный запрос длиной более 32 000 символов.