Result = ibm_db.fetch_both(stmt) -> Слишком длинное значение. SQLSTATE=22001 SQLCODE=-433

Код написан на python 2.7, и я использую ibm_db для извлечения данных из IBM DB2 10.5.5.

Когда я запрашиваю относительно большой набор результатов, я получаю следующее сообщение об ошибке:

Exception: Fetch Failure: [IBM][CLI Driver][DB2/LINUXX8664] SQL0433N Value "

Вот кусок кода:

CONN = ibm_db.connect<connection_info>
stmt = ibm_db.exec_immediate(CONN, sql_sentence)
result = ibm_db.fetch_both(stmt)
array_results = []

while result:
    document = result.get('PUSH_CONTENT').encode('utf8', 'replace')
    array_results.append(document.replace("<?xml version=\"1.0\" encoding=\"UTF-16\" ?>", ""))
    result = ibm_db.fetch_both(stmt)

Ошибка возникает в этой строке:

result = ibm_db.fetch_both(stmt)

В тестах, которые я сделал, если запросить до 500 записей, он работает нормально, но если я запрошу 600, он сломается. Каждая строка имеет относительно большой объем текста.

Существуют ли какие-либо ограничения на объем данных и/или записей, которые он может обрабатывать?

заранее спасибо

Я не думаю, что это связано с данными в определенной строке, я уже проверил это и могу получить конкретную строку. Тип столбца xml Спасибо.

Edrei Marcelo Ribeiro 10.02.2019 14:51

sql довольно прост, выберите push_content из <table_name>, где status = 0 и HTML_CONTENT = '' fetch первых 500 строк работает только 500 строк, если я увеличу его до 600 или более, он сломается

Edrei Marcelo Ribeiro 10.02.2019 15:58

SQLSTATE = 22001 - SQLCODE 433; Важные данные усекаются во время CAST к символу. Текст причины: длина результирующей строки символов недостаточно велика для хранения символьного представления значения. Вы уверены, что ваша переменная имеет правильный размер?

Nifriz 11.02.2019 11:52

@Nifriz Ошибка возникает в этой строке результат = ibm_db.fetch_both(stmt) Чтобы проверить вашу теорию, я тестировал только получение данных ibm_db.fetch_both(stmt), и ошибка та же самая, поэтому она не выглядит связанной с этим ИЛИ это что-то в самой библиотеке. Спасибо.

Edrei Marcelo Ribeiro 11.02.2019 12:56

Вы убедились, что один и тот же оператор SQL работает в командной строке (т.е. вне Python)? Ошибка, похоже, исходит со стороны сервера.

mao 11.02.2019 13:40

@EdreiMarceloRibeiro эта ошибка обычно генерируется инструкциями вставки или обновления sql, а не выбором, как в вашем случае. Поэтому, пожалуйста, попробуйте свой оператор SQL в консоли DB2, как советует Мао, и сообщите нам результат.

Nifriz 11.02.2019 14:55

@mao Nifriz вы правы, эта ошибка генерируется на сервере (позор мне, что я не проверил ее перед публикацией) большое спасибо за вашу помощь

Edrei Marcelo Ribeiro 11.02.2019 16:21

Для тех, кто интересуется окончательным решением, или решением для самого sql-запроса, вот оно: выберите push_content, XMLSERIALIZE (XMLELEMENT (имя "html_content", d.html_content) как clob (2G)) AS "html_content" из <table_name> d

Edrei Marcelo Ribeiro 11.02.2019 17:32
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
8
677
0

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