я столкнулся странный вопрос, пытаясь сохранить список элементов (длиной ~ 30) в базу данных с помощью bulk_insert
, я получаю django.db.utils.DatabaseError: ORA-12704: character set mismatch
но вставляя элементы один за другим через save
в порядке, даже если положить несколько элементов в bulk_insert
работ.django.db.utils.DatabaseError: ORA-12704: набор символов несовпадение
0
A
ответ
0
Недавно я столкнулся с той же проблемой. Структура sql django, созданная для bulk_create(), выглядит так: Вставить в table_name (column_name1, column_name2) выбрать a1, a2 из dual union all выбрать a3, a4 из dual.
Djano orm преобразует все значения в unicode перед выполнением инструкции. В cx_Oralce None будет рассматриваться как VARCHAR2, unicode будет рассматриваться как NVARCHAR2, поэтому, если у нас будет ORA-12704, если a1 - None и a2 не None. Если мы вставляем элементы по одному, то Django orm будет использовать другой sql, поэтому у нас не будет этой проблемы.