Seulement 64kO stocké dans un BLOB en utilisant DBD::mysql
3 réponses
Syn
Bonjour,
J'ai posté un news hier s'intitulant "Longeur maximale d'une variable
scalaire" car je croyais que cela était mon problème mais apparament
non. Je m'explique: ce que je veux faire c'est en PERL lire une fichier
JPEG de taille variable entre 25 kO et 100 kO que je veux ensuite insere
dans une colone BLOB dans une base de donnée MySQL v4.0.13. J'ai
verifier quand je lis le fichier JPEG en utilisant la subroutine
read_file_into_scalar, la taille du fichier est correcte mais c'est
ensuite lors de l'insert dans la DB que la taille ne correspond plus si
je fais un SELECT LENGTH(ma_colone_blob) FROM file_data je vois que les
plus gros fichiers font 65535 octets.
Maintenant ma difficulté et ou j'ai un problème c'est de trouver OU est
cette limitation à 64 kO. Donc en gros ce n'est pas PERL ni MySQL car
MySQL dans un BLOB peut avoir de très grosses données donc il ne reste
plus que les modules DBI et DBD::mysql qui pouraient etre coupable... Le
problème c'est que j'ai rien vu dans les perldoc de ces deux modules.
Quelqu'un aurait-il une idée ?
Pour votre information voici la fonction qui lit le fichier JPEG et le
mets dans une variable scalaire:
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
jl_morel
Dans l'article , a dit...
J'ai posté un news hier s'intitulant "Longeur maximale d'une variable scalaire" car je croyais que cela était mon problème mais apparament non. Je m'explique: ce que je veux faire c'est en PERL lire une fichier JPEG de taille variable entre 25 kO et 100 kO que je veux ensuite insere dans une colone BLOB dans une base de donnée MySQL v4.0.13. J'ai verifier quand je lis le fichier JPEG en utilisant la subroutine read_file_into_scalar, la taille du fichier est correcte mais c'est ensuite lors de l'insert dans la DB que la taille ne correspond plus si je fais un SELECT LENGTH(ma_colone_blob) FROM file_data je vois que les plus gros fichiers font 65535 octets.
[couic]
Et ci-dessous se trouve les commandes qui m'insere le contenu du fichier dans la base MySQL:
$sth = $dbh->prepare( qq { INSERT INTO file_data(data) VALUES (?) } ); $sth->execute($snapshot1_data); $insert_id = $sth->{'mysql_insertid'}; printf("MySQL insert ID for data: %dn", $insert_id); $sth->finish;
Est-ce que je fais quelque chose de faux ? Je vois vraiment pas ou est le problème...
Dans l'article <3F1D08E2.7000504@hotmail.com>, syn_NOSPAM_uw@hotmail.com a
dit...
J'ai posté un news hier s'intitulant "Longeur maximale d'une variable
scalaire" car je croyais que cela était mon problème mais apparament
non. Je m'explique: ce que je veux faire c'est en PERL lire une fichier
JPEG de taille variable entre 25 kO et 100 kO que je veux ensuite insere
dans une colone BLOB dans une base de donnée MySQL v4.0.13. J'ai
verifier quand je lis le fichier JPEG en utilisant la subroutine
read_file_into_scalar, la taille du fichier est correcte mais c'est
ensuite lors de l'insert dans la DB que la taille ne correspond plus si
je fais un SELECT LENGTH(ma_colone_blob) FROM file_data je vois que les
plus gros fichiers font 65535 octets.
[couic]
Et ci-dessous se trouve les commandes qui m'insere le contenu du fichier
dans la base MySQL:
$sth = $dbh->prepare( qq { INSERT INTO file_data(data) VALUES (?) } );
$sth->execute($snapshot1_data);
$insert_id = $sth->{'mysql_insertid'};
printf("MySQL insert ID for data: %dn", $insert_id);
$sth->finish;
Est-ce que je fais quelque chose de faux ? Je vois vraiment pas ou est
le problème...
J'ai posté un news hier s'intitulant "Longeur maximale d'une variable scalaire" car je croyais que cela était mon problème mais apparament non. Je m'explique: ce que je veux faire c'est en PERL lire une fichier JPEG de taille variable entre 25 kO et 100 kO que je veux ensuite insere dans une colone BLOB dans une base de donnée MySQL v4.0.13. J'ai verifier quand je lis le fichier JPEG en utilisant la subroutine read_file_into_scalar, la taille du fichier est correcte mais c'est ensuite lors de l'insert dans la DB que la taille ne correspond plus si je fais un SELECT LENGTH(ma_colone_blob) FROM file_data je vois que les plus gros fichiers font 65535 octets.
[couic]
Et ci-dessous se trouve les commandes qui m'insere le contenu du fichier dans la base MySQL:
$sth = $dbh->prepare( qq { INSERT INTO file_data(data) VALUES (?) } ); $sth->execute($snapshot1_data); $insert_id = $sth->{'mysql_insertid'}; printf("MySQL insert ID for data: %dn", $insert_id); $sth->finish;
Est-ce que je fais quelque chose de faux ? Je vois vraiment pas ou est le problème...
- vous ne parlez pas de la définition de la table. quelle est la taille de votre champs BLOB ?
Alors pour mon champ BLOB dans la creation de la table j'ai rien specifié j'ai juste mis BLOB. Voici un DESCRIBE sur la table en question:
+-------+---------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------+---------+------+-----+---------+----------------+ | id | int(11) | | PRI | NULL | auto_increment | | data | blob | | | | | +-------+---------+------+-----+---------+----------------+
Comment puis-je voire quelle est la taille de mon champ BLOB ?
- et aussi, dans la doc de mysql il est dit que la taille dépend aussi de la taille des buffers de communication citation : * The maximum size of a BLOB or TEXT object is determined by its type, but the largest value you can actually transmit between the client and server is determined by the amount of available memory and the size of the communications buffers. You can change the message buffer size, but you must do so on both the server and client ends. See section 5.5.2 Tuning Server Parameters.
Le serveur à 1 GB de mémoire et voici l'output de mysqld --help:
Je ne vois rien de spécial la dedans qui limiterai les données a 64kO...
Une autre idée peut-etre ?
Merci
Salutations
cyrille wrote:
bonjour,
- vous ne parlez pas de la définition de la table. quelle est la taille de
votre champs BLOB ?
Alors pour mon champ BLOB dans la creation de la table j'ai rien
specifié j'ai juste mis BLOB. Voici un DESCRIBE sur la table en question:
+-------+---------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+----------------+
| id | int(11) | | PRI | NULL | auto_increment |
| data | blob | | | | |
+-------+---------+------+-----+---------+----------------+
Comment puis-je voire quelle est la taille de mon champ BLOB ?
- et aussi, dans la doc de mysql il est dit que la taille dépend aussi de la
taille des buffers de communication
citation :
* The maximum size of a BLOB or TEXT object is determined by its type, but
the largest value you can actually transmit between the client and server is
determined by the amount of available memory and the size of the
communications buffers. You can change the message buffer size, but you must
do so on both the server and client ends. See section 5.5.2 Tuning Server
Parameters.
Le serveur à 1 GB de mémoire et voici l'output de mysqld --help:
- vous ne parlez pas de la définition de la table. quelle est la taille de votre champs BLOB ?
Alors pour mon champ BLOB dans la creation de la table j'ai rien specifié j'ai juste mis BLOB. Voici un DESCRIBE sur la table en question:
+-------+---------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------+---------+------+-----+---------+----------------+ | id | int(11) | | PRI | NULL | auto_increment | | data | blob | | | | | +-------+---------+------+-----+---------+----------------+
Comment puis-je voire quelle est la taille de mon champ BLOB ?
- et aussi, dans la doc de mysql il est dit que la taille dépend aussi de la taille des buffers de communication citation : * The maximum size of a BLOB or TEXT object is determined by its type, but the largest value you can actually transmit between the client and server is determined by the amount of available memory and the size of the communications buffers. You can change the message buffer size, but you must do so on both the server and client ends. See section 5.5.2 Tuning Server Parameters.
Le serveur à 1 GB de mémoire et voici l'output de mysqld --help: