![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Копирование таблицы [D7]
Demiurg © (2004-04-20 10:13:00)Копирую таблицу из одной базы в другую. В одной записи этой таблицы есть очень длинное текстовое поле. И на этой записи вылетает ексепшн с сообщением что-то типа "Invalid BLOB hanlde". Походу такая длинная строка как blob рассматривается. Прбовал копировать разными способами - то же самое... Что это может быть и как лечить? Помогите, плиз.
Да, база InterBase. К исходной таблице обращаюсь через BDE, к результирующей напрямую.
Johnmen (2004-04-20 17:53:00) [1]Это БДЕ тупит. А может версия старая...
Demiurg (2004-04-20 17:50:00) [2]Однако IsBlob выдает true...
Johnmen (2004-04-20 17:32:00) [3]>точнее VARCHAR 1024, но это же blob
Нет, что ты !!!!!!!!!!
Demiurg (2004-04-20 17:29:00) [4]Поле Blob (точнее VARCHAR 1024, но это же blob) :) На строках до 255 работает нормально, выше вылетает. Причем при любом обращении к полю. Я тоже сделал вывод, что BDE глючит. Решил, короче, получить через алиас путь к базе, и работать с данной таблице напрямую :)
Все огромное спасибо за ответы!
Johnmen (2004-04-20 17:09:00) [5]Ну даже не знаю... Видимо проблемы с БДЕ...
Кстати, какого типа поле ?
Demiurg (2004-04-20 17:07:00) [6]
> Возможно BLOBS TO CACHE надо побольше, т.е. >= кол-ву записей
> в qSDicti.
Может вылететь и в самом начале итерации, если запись с длинным description (это поле такое) попадется. Проверял.
Johnmen (2004-04-20 17:04:00) [7]>Ega23 © (20.04.04 17:02) [24]
А я говорю о количестве, а не качестве...:)
Ega23 (2004-04-20 17:02:00) [8]Johnmen © (20.04.04 16:58) [23]
Он же говорил, что максимально - около 300 символов.
Johnmen (2004-04-20 16:58:00) [9]>что-то типа "Invalid BLOB hanlde".
Возможно BLOBS TO CACHE надо побольше, т.е. >= кол-ву записей в qSDicti.
Demiurg (2004-04-20 16:35:00) [10]
> Примерно так для BLOB
> ms:=TMemoryStream.Create;
> TBlobField(qSDicti.Fields[x]).SaveToStream(ms);
> sDDicti.Params[x].LoadFromStream(ms,0);
> ms.Free;
Та же история :( Все BLOB поля нормально копируются в стрим,но если поле большое, то вылетает на SaveToStream с той же ошибкой...
Demiurg (2004-04-20 13:59:00) [11]
> Johnmen
Ржалъ долго :)))
Johnmen (2004-04-20 13:47:00) [12]http://213.248.61.64/cgi-bin/slovari/BBB.pl?length=&sence=&power=&url=http://www.delphimaster.ru/cgi-bin/forum.pl?id=1082441582%26n=1
:)))
Курдль (2004-04-20 13:41:00) [13]
> Не стОит пробовать. Не получится.
> Вот если к обеим БД доступ через БДЕ, то можно...
А, я упустил пояснение, что таблицы в разных БД :(
Demiurg (2004-04-20 13:41:00) [14]
> > А простым скриптом типа
>
> Нет! Щас попробую. Мне такая идея что-то в голову не пришла...
> :)
Хотя не... А как мне в одном скрипте использовать таблицы из разных баз? Через BDE имхо не получится...
Johnmen (2004-04-20 13:40:00) [15]>Щас попробую.
Не стОит пробовать. Не получится.
Вот если к обеим БД доступ через БДЕ, то можно...
Demiurg (2004-04-20 13:38:00) [16]
> А простым скриптом типа
Нет! Щас попробую. Мне такая идея что-то в голову не пришла... :)
Johnmen (2004-04-20 13:26:00) [17]Примерно так для BLOB
ms:=TMemoryStream.Create;
TBlobField(qSDicti.Fields[x]).SaveToStream(ms);
sDDicti.Params[x].LoadFromStream(ms,0);
ms.Free;
Курдль (2004-04-20 13:20:00) [18]А простым скриптом типа
insert into TABLE_1 (FIELD_1, ... FIELD_N)
select TABLE_2 (FIELD_1, ... FIELD_N)
не пробовали? :)
Demiurg (2004-04-20 13:13:00) [19]
> Могу предположить, что ошибка вылетает на строках, длиннее
> 255-ти символов?
Скорее всего. Но это не решает проблему :)
Nikolay M. (2004-04-20 11:55:00) [20]Могу предположить, что ошибка вылетает на строках, длиннее 255-ти символов?