[закрыто] «Операция недопустима в это время» повышается * случайным образом * при вставке значений в таблицу db2 - PullRequest
0 голосов
/ 01 апреля 2020

При попытке загрузить данные в таблицу IBM DB2 (используя соединитель ibm_db для Python 3.7), я получаю следующую ошибку:

Исключение: Ошибка 1: [IBM] [ Драйвер CLI] CLI0126E В данный момент операция недопустима. SQLSTATE = HY011 SQLCODE = -99999

при выполнении следующей части кода:

connection=ibm_db.pconnect(*CONNECTION_INFORMATION*)

def execute_many(expr, data):
    stmt = ibm_db.prepare(connection, expr)
    return ibm_db.execute_many(stmt, data)

insert_o_command = "INSERT INTO "+ o_name +" (position_id, title, type, quantity, price_btc, city, country) VALUES (?, ?, ?, ?, ?, ?, ?)"

execute_many(insert_o_command, tuple(offers))

Где len (предложения) == 151829

Схема таблицы is:

(offer_id int GENERATED ALWAYS AS IDENTITY PRIMARY KEY,\
        position_id int NOT NULL,\
        title VARCHAR(2047) NOT NULL,\
        type VARCHAR(256),\
        quantity decimal(10, 3) NOT NULL,\
        price_btc decimal(10, 8) NOT NULL,\
        city VARCHAR(2047),\
        country VARCHAR(255))

При загрузке без слайсов последней загруженной строкой является 2109:

(133334, 'Борисов (Минская обл., Беларусь)', '', 1.1, 0.01119306, 'Борисов',  'Belarus')

Следующий элемент в предложениях имеет следующие значения и не загружен:

(78738, 'Полоцк (Беларусь)', '', 1.1, 0.00784071, 'Полоцк', 'Belarus')

В других частях скрипта при загрузке других данных все работает. После появления ошибки количество строк, загружаемых в облако, зависит от того, как (и если) я нарезал предложения. Если я загружаю все, это всегда застревает в одном ряду. Но если я слегка нарежу список предложений (например, предложения [10:]), он остановится и выдаст ошибку в другой строке. Я проверил целостность данных, строки, в которых прекращается загрузка, не являются чем-то особенным.

Если я выполняю загрузку по частям (то есть по 500 строк), большая часть этих частей загружается без прерываний, и 5-7 порций по 500 загружены с поднятыми ошибками.

Элементы, на которых возникает ошибка, одинаковы во время прогонов, но меняются при разрезании списка предложений.

Я не нашел нет Информация об этой проблеме на inte rnet. Для меня это выглядит совершенно случайно!

Я использую службу IBM Cloud DB2 (https://cloud.ibm.com/catalog/services/db2)

Симптом повторяется, если я не не использовать пул соединений (т.е. ibm_db.connect вместо ibm_db.pconnect).

UPD: теперь он загружает только 1 строку, затем останавливается.

...