IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SQL Procédural MySQL Discussion :

[MySQL4.1.12]Taille limite du type Longblob


Sujet :

SQL Procédural MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de perlgirl
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 123
    Par défaut [MySQL4.1.12]Taille limite du type Longblob
    Bonjour

    J'ai une base de données MySQL qui me sert de bibliotheque qui me permet de stocker des articles et leur references. J'ai décidé de stocker physiquement les articles au format PDF dans la base de données dans un champs de type LongBLOB.
    Je suis en train de remplir cette base de données et certains articles dont la taille depasse 1Mo ne sont pas inserer dans la base de données. J'en ai déduit qu'il y avait une taille limite ... mais j'aimerai avoir confirmation et si c'est bien le cas comment y remédier.

    Pour info je suis sous Mac Os X 10.3.7 et j'utilise MAMP qui est l'equivalent de easyPHP.

    Merci d'avance,

    Perlgirl

  2. #2
    Expert confirmé
    Avatar de qi130
    Homme Profil pro
    Expert Processus IT
    Inscrit en
    Mars 2003
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Expert Processus IT
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 932
    Par défaut
    Il faudra chercher ailleurs pour résoudre ton pb : 4.294.967.295 octets

  3. #3
    Rédacteur
    Avatar de pcaboche
    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    2 785
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Singapour

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 785
    Par défaut
    Une petite hypothèse : est-ce que par hasard, dans le LONGBLOB, on n'aurait pas sans le vouloir des caractères spéciaux qui feraient que MySQL croit à une fin de chaine? Y-a-t'il des problèmes connus dans ce genre? Faut-il préciser quelque part que le LONGBLOG est en mode binaire (pour éviter d'interpréter le caractère '\0'? (0x00) comme une fin de chaine).

    Ce sont des hypothèses.
    "On en a vu poser les armes avant de se tirer une balle dans le pied..."
    -- pydévelop

    Derniers articles:

    (SQL Server) Introduction à la gestion des droits
    (UML) Souplesse et modularité grâce aux Design Patterns
    (UML) Le Pattern Etat
    Autres articles...

  4. #4
    Membre confirmé Avatar de perlgirl
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 123
    Par défaut
    Alors j'ai fait quelques recherches sur le net et je suis tombé sur ca:

    La taille maximale d'un objet BLOB ou TEXT est déterminée par son type, mais la valeur la plus grande que vous pouvez transmettre au programme client est déterminée par la quantité de mémoire disponible sur le serveur et par les tailles des buffers de communication. Vous pouvez changer la taille des buffers de communication, mais vous devez le faire sur le serveur et le client en même temps. Choix des paramètres du serveur .
    Mais pour moi qui ne suit pas une pro dans ce domaine c'est plutot du chinois tout ça .
    Comment je peux changer la taille de communication des buffers??

    Perlgirl

  5. #5
    Membre Expert Avatar de Maximil ian
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 622
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 622
    Par défaut
    Côté serveur, ça doit être max_allowed_packet (cf http://dev.mysql.com/doc/refman/5.0/en/server-system-variables.html) et côté client, des variables PHP du style upload_max_filesize...

    Tu remplis les BLOBs dans du code ou directement ?

  6. #6
    Membre confirmé Avatar de perlgirl
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 123
    Par défaut
    Merci pour ta reponse et ton lien, je pense en effet qu'il doit s'agir de la variable max_allowed_packet qui est par defaut a 1Mo ce qui correspond a la limite de la taille de mes fichiers qui se retrouvent rentré dans la base de données...

    Par contre j'aimerai savoir dans quel fichier je peux changer cette variable, est ce que c'est dans mysqld???

    Sinon pour repondre a ta question je rempli les blobs via une interface PHP et j'ai deja changé les variables post_max_size et upload_max_size du fichier php.ini mais cela ne change rien a mon probleme...

    Perlgirl

  7. #7
    Membre Expert Avatar de Maximil ian
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 622
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 622
    Par défaut
    Citation Envoyé par perlgirl
    Par contre j'aimerai savoir dans quel fichier je peux changer cette variable, est ce que c'est dans mysqld???
    Tu peux changer ça en passant le paramètre --max-allowed-packet=xxx au serveur mysqld ou sinon via le fichier de configuration my.cnf/my.ini (je ne sais pas lequel c'est sous Mac OSX, bonne question tiens )

  8. #8
    Membre confirmé Avatar de perlgirl
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 123
    Par défaut
    Bon je viens de regarder et chercher des fichiers de config du serveur mysql mais je n'ai rien trouvé...

    Une question peut-etre idiote mais comment tu fais pour dialoguer avec le serveur mysqld et lui rentrer en parametre la nouvelle valeur de max_allowed_packet????

    Perlgirl

  9. #9
    Expert confirmé
    Avatar de qi130
    Homme Profil pro
    Expert Processus IT
    Inscrit en
    Mars 2003
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Expert Processus IT
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 932
    Par défaut
    Je crois que c'est un paramètre du lancement du serveur:
    mysqld --max-allowed-packet=xxx

  10. #10
    Membre confirmé Avatar de perlgirl
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 123
    Par défaut
    Alors oui j'ai bien compris que c'etait un parametre a attribuer au lancement du serveur mysqld.
    Mais comme ave easyphp, MAMP lance au demarrage automatiquement le serveur apache et le serveur mysql. Apres j'ai essayé de lancer en ligne de commande
    max_allowed_packet=xxx
    mais ca me met que la commande n'est pas trouvé...
    plus precisemment ca me met:

    -bash: mysql: commande not found
    Je dois me positionner dans un repertoir particulier pour lancer cela??

    Perlgirl [/code]

  11. #11
    Membre confirmé Avatar de perlgirl
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 123
    Par défaut
    Me revoilà toujours avec le meme problème, meme si j'ai reussi a avancer un peu plus ...

    J'ai donc dans un premier temps executé les commandes suivante:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    mysql --max_allowed_packet=16M;
    OU
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    mysqld --max_allowed_packet=16M;
    mais ca m'affiche l'erreur suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL servers version for the right syntax to use near 'mysql --max_allowed_packet=16M'
    Donc après j'ai cherché les fichiers .cnf ou j'ai egalement changé la valeur de la variable mais quand je regarde les variables du serveurs dans phpmyadmin ou en faisant "SHOW VARIABLES" la valeur de max_allowed_packet est toujours inchangée .

    J'ai bien entendu redemarré les serveurs avant de regarder.

    Perlgirl

  12. #12
    Membre Expert Avatar de Maximil ian
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 622
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 622
    Par défaut
    Citation Envoyé par perlgirl
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    mysql --max_allowed_packet=16M;
    OU
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    mysqld --max_allowed_packet=16M;
    mais ca m'affiche l'erreur suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL servers version for the right syntax to use near 'mysql --max_allowed_packet=16M'
    C'est mysqld --max-allowed-packet avec des tirets et non des underscores.

    Donc après j'ai cherché les fichiers .cnf ou j'ai egalement changé la valeur de la variable mais quand je regarde les variables du serveurs dans phpmyadmin ou en faisant "SHOW VARIABLES" la valeur de max_allowed_packet est toujours inchangée .
    Peut-être que tu ne l'as pas mis dans le bon fichier de configuration... Pour en être sûre, démarre le serveur avec l'option --defaults-file=<chemin_fichier>.
    Tu peux aussi modifier la variable "à la volée" avec un SET GLOBAL max_allowed_packet=xxx

  13. #13
    Membre confirmé Avatar de perlgirl
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 123
    Par défaut
    Alors j'ai essayé en ligne de commande (dans le bash)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    mysql --max_allowed_packet=16M;
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    mysqld --max_allowed_packet=16M;
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    mysql --max-allowed-packet=16M;
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    mysqld --max-allowed-packet=16M;
    toujours la meme erreur renvoyée
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    -bash: mysql: command not found
    Ensuite je me suis placée dans le répertoir bin de mysql et j'ai tapé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ./mysql -u root -p
    Je me retrouve connecté à mysql et j'ai essayé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    mysql> mysql --max_allowed_packet=16M;
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    mysql> mysqld --max_allowed_packet=16M;
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    mysql> mysql --max-allowed-packet=16M;
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    mysql> mysqld --max-allowed-packet=16M;
    toujours la meme erreur renvoyée
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL servers version for the right syntax to use near 'mysql --max_allowed_packet=16M'
    J'ai ensuite essayé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SET GLOBAL max_allowed_packet = 16 * 1024 * 1024;
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SET GLOBAL max_allowed_packet = 16777216;
    et ca renvoi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Query OK, 0 rows affected (0.00 sec)
    et j'ai vérifié la variable max_allowed_packet n'a toujours pas bougée.

    Dans le doute j'ai aussi tapé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SET GLOBAL max-allowed-packet = 16 * 1024 * 1024;
    mais la ca renvoi une erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ERROR 1193 (HY000): Unknown system variable 'max'
    rien ne marche heeeelllp

    Petite précision (je ne sais pas si ca a une importance): j'utilise MAMP donc mysql n'est pas dans le répertoire local(/usr/local/bin)

Discussions similaires

  1. Textarea : Taille limite ?
    Par Mr N. dans le forum Langage
    Réponses: 3
    Dernier message: 17/11/2005, 17h40
  2. [debutant]Taille limité Oracle 9.2.0.6
    Par Carlito_superheros dans le forum Oracle
    Réponses: 3
    Dernier message: 18/10/2005, 19h32
  3. [String] Taille limite ?
    Par Clorish dans le forum Langage
    Réponses: 2
    Dernier message: 13/07/2005, 11h50
  4. Taille d'un type TEXT ?
    Par rdams dans le forum Langage SQL
    Réponses: 2
    Dernier message: 05/03/2005, 09h46
  5. taille limite d'une priority_queue
    Par traiangueul dans le forum SL & STL
    Réponses: 3
    Dernier message: 26/08/2004, 17h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo