Subject | Re: Blob not found |
---|---|
Author | andreas.parslow |
Post date | 2009-10-15T14:36:16Z |
Thanks for answering.
If anyone knows how to create a blob object in perl i'd like to hear from you ;-)
-Andreas
If anyone knows how to create a blob object in perl i'd like to hear from you ;-)
-Andreas
--- In firebird-support@yahoogroups.com, Mark Rotteveel <Avalanche1979@...> wrote:
>
> I don't know the perl-bindings, but most likely with the way you are
> inserting, the blob is treated as a VARCHAR instead of a blob and
> therefor you are confronted with the size limit of VARCHARs.
>
> Most likely you need to prepare a blob object, use that in the insert
> and then stream the blob to the server before the commit/execute.
>
> Mark
>
>
> andreas.parslow wrote:
> > Hi
> >
> > I'm using Firebird for the first time, after previously only using MySQL. I'm trying to insert a language file from the Opera browser into a BLOB field, but i either get "BLOB not found" or "invalid BLOB ID". The last error is if i convert the file to utf8 before inserting.
> >
> > The code i'm using is (in perl):
> >
> > ------------
> > open my $file, '<', 'en.lng';
> > binmode $file;
> > my $full_file = '';
> > while (<$file>) {
> > $full_file .= $_;
> > }
> > close $file;
> >
> > my $inserted = $sql->do(
> > 'INSERT INTO blobtest(test) VALUES(?)',
> > $full_file
> > );
> > $sql->commit();
> > ------------
> >
> > This gives me the "BLOB not found" error. Adding
> > $full_file = Encode::encode('utf8', $full_file);
> > before the insert-statement makes the error "invalid BLOB ID".
> >
> > The info about the database and table:
> > ------------
> > Database: /var/db/fortesting.db
> > Owner: SYSDBA
> > PAGE_SIZE 4096
> > Number of DB pages allocated = 285
> > Sweep interval = 20000
> > Forced Writes are OFF
> > Transaction - oldest = 57
> > Transaction - oldest active = 58
> > Transaction - oldest snapshot = 58
> > Transaction - Next = 61
> > Default Character set: NONE
> >
> > show table test;
> > TEST BLOB segment 80, subtype UNKNOWN Nullable
> > ------------
> >
> > The file "en.lng" is the standard language file for the Opera Browser, and contains 272874 bytes. One thing i've noticed is that the insert works fine if i cut most of the file so it's 65534 bytes. At 65535 bytes the error shows up again. You can find the language file here: hxxp://www.opera.com/download/languagefiles/.
> >
> > So the question is what i could be doing wrong here, and what do i need to do to insert the file into the BLOB field?
> > Thanks in advance for any help.
>
>
> --
> Mark Rotteveel
>