Я пытаюсь обновить столбец oracle clob следующим образом:
MyData.where('id=?', id).update_all(['json=?', (json)])
Я получаю следующую ошибку:
OCIError: ORA-01704: слишком длинный строковый литерал: ОБНОВЛЕНИЕ «MYDATA»
Я пробовал следующее:
MyData.where('id=?', id).update_all(['json=?', to_clob(json)])
неопределенный метод `to_clob' для класса
Как мне указать рельсам использовать столбец как clob.
Я использую oracle 12c, rails 5.1 и ruby-2.4.1.
РЕДАКТИРОВАТЬ: update_all(json: json) очищает данные для этого столбца и делает его пустым.
update_all
пытается отправить в базу данных SQL, подобныйupdate ... set json='some string longer than 4000 characters...' where id = ...
, а Oracle не любит строковые литералы длиннее 4k символов. Насколько мне известно, правильным решением является использование связанных параметров, ноupdate_all
может оказаться недостаточно умным для этого.update_all(json: json)
ведет себя лучше? - person mu is too short   schedule 30.12.2017