Subject | Blob not found |
---|---|
Author | andreas.parslow |
Post date | 2009-10-14T12:13:36Z |
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.
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.