Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: разработка для Web > хранение бинарных данных в mysql


Автор: burakov 4.12.2013, 11:33
Добрый день, 

необходимо в Mysql (поле longblob) вставить бинарные данные. 
строку обработанную gzip

для создания строки использовал модули
use IO::Compress::Gzip qw(gzip $GzipError);
use IO::Uncompress::Gunzip qw(gunzip $GunzipError);

при вставке
обработал
$dhb->quote ($gzip_str);

но при insert в поле
данные обрезаются.
почему не пойму.

может кто поделится работающим примером ?







Автор: Bulat 4.12.2013, 11:50
Код

#!/usr/bin/perl

use strict;
use DBI;

my $WebHost = ****;
my $WebDatabase = ****;
my $WebPort = ****;
my $WebUsername = ****;
my $WebPasswd = ****;

my $web = DBI -> connect(
  "dbi:mysql:database=$WebDatabase;host=$WebHost;port=$WebPort",
  $WebUsername,
  $WebPasswd,
  {
    AutoCommit => 1,
    RaiseError => 1
  }
) || die $!;
$web -> do("SET NAMES 'utf8'");

my $sth = $web -> prepare("INSERT INTO test(lnbl) VALUES(?)");
$sth -> execute(chr(18).chr(3).chr(32));


 
Код

CREATE TABLE `test` (
  `lnbl` longblob
) ENGINE=InnoDB DEFAULT CHARSET=utf8


в простейшем примере у меня вроде бы все работает и вставляется.

Цитата(burakov @  4.12.2013,  11:33 Найти цитируемый пост)
но при insert в поле
данные обрезаются.


Каким образом обрезаются? Наполовину, последние 5 символов или первые 20 байтов?? Мож уточнишь, что конкретнее под этим подразумевается??

Автор: burakov 4.12.2013, 14:34
данные обрезаются произвольно с конца. (каждый раз разное количество --- строк много -- так вот каждая строка получается произвольно обрезана с конца и вставлена)

то есть проходят в базу только первый кусочек ( с начала)., короткий кусочек, очень небольшой.

решил вопрос через дополнительную шифрацию ZIP контента
base64

а так по простому ... в поле не лезет.


Автор: tishaishii 18.1.2014, 23:12
Если longblob, то должно влезать.

Автор: DEER 19.1.2014, 15:36
http://forum.vingrad.ru/forum/topic-71481.html

почитай, может поможет

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)