![]() |
|
Модераторы: LSD |
![]()
|
|
| Sleepy_PIP |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 512 Регистрация: 30.6.2004 Где: Moscow Репутация: нет Всего: 12 |
короче вот так:
где: ResultSet rr, OraclePreparedStatement insS=(OraclePreparedStatement)cc.connORA.prepareStatement(insSQL); на insS.executeQuery() получаем ошибку: java.sql.SQLException: ORA-24813: нельзя отправить или получить неподдерживаемый LOB при попытке записать боолее 4000 байт. (а может и не в этом дело??) Граница - общеизвестная, да. объявление таблицы в интересующем поле:
уже понимаю что есть ограничения в 4к, что храняться в основной таблице. как это обойти? Это сообщение отредактировал(а) LSD - 30.10.2005, 19:07 -------------------- -- Sleepy_PIP. Pavel Pryazhentsev (ex. 2:5020/141) "... Лучше быть нужным, чем свободным ..." |
||||
|
|||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 18 Всего: 538 |
Где выполняется данный код, внутри сервера Oracle или на клиенте?
Когда код выполняется внутри сервера Oracle используется другой JDBC драйвер, который не позволяет получать blob в виде byte[] если он по размеру больше 4К. Приходилось использовать Blob.getBinaryStream(). P.S. В доке также написанно, что данная ошибка может возникать если используются разные версии сервера и клиента, ты проверял версии совпадают? -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| Sleepy_PIP |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 512 Регистрация: 30.6.2004 Где: Moscow Репутация: нет Всего: 12 |
на клиенте. счаз попробую через стиримы. хотя ошибка говорит о не соместимости клинта и сервера. однако клиент от 9.1.2 и сервер тот-же. ... -------------------- -- Sleepy_PIP. Pavel Pryazhentsev (ex. 2:5020/141) "... Лучше быть нужным, чем свободным ..." |
|||
|
||||
| LSD |
|
||||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 18 Всего: 538 |
-------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
||||
|
|||||
| Sleepy_PIP |
|
||||||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 512 Регистрация: 30.6.2004 Где: Moscow Репутация: нет Всего: 12 |
сделал так:
ошибки не возникает, но ничего в блоб не пишется (а данные - есть - во входном ResultSet'е rr). А как проверить версию клиента? У меня все стоит локально - и прогрмака и сервер на одной машинке. Сервер у меня 9.2.0.1.0 . отдельно никакого клиента не ставил, но ранее тут-же стоял Oracle8i, так что возможно клиент и не тот. Как проверить какой клиент актуален? и еще: сейсчаз я пытаюсь работать с полями типа BLOB, а ранее работал с полем LONG RAW таким куском кода:
и все было прекрасно. но теперь мне нужны _именно_ blob ... Спасибо! PS: да, я делаю вставку - т.е. insS - это инсертный стейтмент Это сообщение отредактировал(а) Sleepy_PIP - 31.10.2005, 04:54 -------------------- -- Sleepy_PIP. Pavel Pryazhentsev (ex. 2:5020/141) "... Лучше быть нужным, чем свободным ..." |
||||||||||
|
|||||||||||
| Sleepy_PIP |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 512 Регистрация: 30.6.2004 Где: Moscow Репутация: нет Всего: 12 |
YES!!! заработало вот как:
теперь остается проверить целостность данных подозреваю что это как-бы так по мягче сказать - не совсем правильный подход Подскажите как тогда правильно делать, а? Спасибо! PS: а с блобом таким временным чего делать еще надо после завершения стейтмента? а то вдруг они в коннекте копятся, а? (в доке не сказано ничего). -------------------- -- Sleepy_PIP. Pavel Pryazhentsev (ex. 2:5020/141) "... Лучше быть нужным, чем свободным ..." |
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 18 Всего: 538 |
По идее он должен освобождаться по окончании вызова, но для надежности можешь его очистить BLOB.freeTemporary(). -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| Sleepy_PIP |
|
||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 512 Регистрация: 30.6.2004 Где: Moscow Репутация: нет Всего: 12 |
Да. экспериментально подтверждена необходимость освобождения БЛОБов после каждого выполнения стейтмента. Иначе рано или позно переполняется shared pool. Но все оказалось еще интереснее. В качестве тестовых данных использовались читабельные строки. (ну разумеется байтовое их представление). Так вот - при приведенном способе при последующем контрольном чтении после коммита вставки в БЛОБах оказывалась нужная строка, предваренная 44 символами 0x20 (пробел) с начала. почем так - не ведаю. В результате перешел как и советовал LSD на стримовый подход. теперь правильная вставка (заполение) блоба выглядит так:
контролькое чтение подтверждает что в БД именно то, что заносилось. Такие вот дела. Это сообщение отредактировал(а) Sleepy_PIP - 1.11.2005, 11:26 -------------------- -- Sleepy_PIP. Pavel Pryazhentsev (ex. 2:5020/141) "... Лучше быть нужным, чем свободным ..." |
||||||
|
|||||||
![]()
|
| Правила форума "Oracle" | |
|
|
Данный раздел предназначен для обсуждения проблем с Oracle Database, другие продукты Oracle здесь не обсуждаются. Просьба при создании темы, придерживаться следующих правил:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Zloxa, LSD. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Oracle | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |