Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Perl: Общие вопросы > как работать в БД с типом LongBlob |
Автор: DEER 21.11.2005, 10:00 |
у меня у одного поля в БД(MySQL 5) тип LONGBLOB, не могу получить, то что там записано ![]() т.е. запрос а выборку срабатывает нормально, но потом, когда пытаюсь получить значение из этого поля, например в $res, ничего не возвращается ![]() Как это лечиться? |
Автор: korob2001 21.11.2005, 10:41 |
Покажи пример того, как ты пытаешься это сделать. |
Автор: DEER 21.11.2005, 10:59 | ||||
pdump.dump имеет тип LONGBLOB этот код выводит
и всё, т.е. запись то отбирается, но значение не возвращается |
Автор: sharq 21.11.2005, 11:53 | ||||
DEER Попробуй посмотреть, что в переменной находится:
Зачем ты в запросе указываешь таблицу перед полем? Ты же работаешь с одной таблицей. В этом может быть и ошибка. Раз ты используешь хеши при выборке, то забирай все поля.
И используй fetchrow в цикле для получения всех записей или вообще используй selectrow_hashref. ![]() |
Автор: DEER 21.11.2005, 12:08 | ||||||||||
Спасибо, попробую
ВОт если запрос сделать так
он возвращает "1", т.е. ошибки нет, это я проверял.... просто мне кажется что этот LONGBLOB надо получать каким то иным способом.... ![]() |
Автор: DEER 21.11.2005, 12:34 | ||
Может не в кассу, но в JAVA есть метод дла получения бинарных данных
где res - результат запроса, что то подобное моему $ref вот что нить подобного нету в Perl? |
Автор: sharq 21.11.2005, 13:23 |
DEER perldoc DBI - LongReadLen. |
Автор: DEER 21.11.2005, 13:36 | ||||||
не пошло
Добавлено @ 13:45 Поясни плиз
он может быть использован для контроля длины поля??? Так что ли? а в этом коде что происхдит? он сначала "подготавливается" для того чтобы можно было получать данные из Blob'а что ли?
|
Автор: DEER 21.11.2005, 13:54 | ||||
Всё! по ходу понял! Короче этот LongReadLen отвечает за максимальную длину выбираемых полей, по умолчанию он стоит в "0", что означает что длинные поля скорее всего не будут выбираться. Для выбора этих полей сначала надо произвести изменение этого аттрибута
и потом уже можно делать выборку из БД
по идее должно заработать. Правильно? |
Автор: korob2001 21.11.2005, 21:34 | ||
![]() |
Автор: DEER 22.11.2005, 09:32 |
Всё работает!!! Даже очень!!! sharq Спасиба за ссылку! korob2001Это не моя пререгатива, базу мне готовую дали ![]() |
Автор: Kiber_rat 28.11.2005, 20:59 |
korob2001 Если хранить в базе ссылку на данные хранящиеся где-то в файлах то это нарушает целостность хранения данных и усложняет возможности для их архивироваия. С этой точки зрения хранение в базе двоичных данных - меньшее из зол. Я иногда использую хранение сериализованных данных в базе, что бы потом их можно было легко превратитьв структуру (хэш например), это тоже оправдывает хранение двоичных данных в базе. |
Автор: korob2001 29.11.2005, 02:25 |
Да всё это понятно, но не дорого ли эта база будет обходиться, если в ней хранить изображения, mp3, flash файлы и т.п.? |
Автор: Kiber_rat 29.11.2005, 07:36 |
Во всам важно чувство меры ![]() |
Автор: alSteve 15.4.2008, 19:41 | ||
Доброго дня! Помогите пожалуйста разобраться в проблеме! Есть код:
в поле TEXT типа LONGBLOB (MySQL5) хранится zip-архив. исходный размер архива 6714 байт. после выполнения вышеуказанного скрипта сохраняется файл test.zip размером 6732 байта и соответственно архив некорректный. Распаковать его не представляется возможным. Где моя ошибка? :dash1 Заранее благодарен! |
Автор: yura_nev 16.4.2008, 08:08 | ||||
после
|
Автор: amg 16.4.2008, 08:49 | ||
Да, должно помочь, если в базе файл нормальный. Чтобы в этом убедится, посмотрите его размер сразу после извлечения из базы:
|
Автор: alSteve 18.4.2008, 08:00 | ||||||
большое спасибо! заработало! |