2010-10-25 3 views
2

I ont le MySQL suivant (version 5.1) de la table (InnoDB):données MySQL est trop long pour se produisant sur une colonne de LONGBLOB

Username varchar(50) 
Sequence int(11) 
FileType varchar(10) 
Photo longblob -- here 
PhotoSize int(11) 
Timestamp datetime 

tentative d'insérer un byte [] 96.7KB échoue avec l'erreur:

Data Too Long For Column 'Photo' At Row 1

L'insertion de byte[] (taille 37,2 Ko) fonctionne correctement. Je ne sais pas quel est le point de basculement. Je l'ai googlé et beaucoup ont dit que la solution était de le changer de BLOB en LONGBLOB. Cela n'a pas fonctionné. D'autres ont dit que le passage à Max_Allowed_Packet à 16M (dans le fichier my.ini) résoudrait le problème. Cela n'a pas fonctionné non plus.

Quelqu'un peut-il m'aider?

Répondre

3

Même s'ils "peuvent", les bases de données ne sont pas créées pour stocker des fichiers binaires. Il est plus efficace d'avoir dans votre table le chemin des fichiers sur votre serveur.

+0

Merci, j'ai changé mon approche – Mikey

2

LONGBLOB

une colonne BLOB avec une longueur maximale de 4,294,967,295 ou 4 Go (232 - 1) octets. La longueur maximale effective des colonnes LONGBLOB dépend de la taille de paquet maximale configurée dans le protocole client/serveur et de la mémoire disponible. Chaque valeur LONGBLOB est stockée en utilisant un préfixe de longueur de quatre octets qui indique le nombre d'octets dans la valeur. Etes-vous sûr d'avoir modifié le bon fichier my.ini? Avez-vous vérifié vos valeurs de configuration chargées? Si vous utilisez phpMyAdmin allez dans l'onglet "Variables" et vérifiez la valeur "max autorisé paquet", la valeur par défaut est 16,777,216, votre devrait être plus quelque chose comme 1 000 000 000

+0

Merci pour l'info, mais j'ai décidé changer d'approche – Mikey

+0

Cette info m'a aidé, merci! – markus

Questions connexes