[SQL] Augmenter la limite d'une ligne

Résolu/Fermé
F2000 Messages postés 27 Date d'inscription jeudi 28 juin 2007 Statut Membre Dernière intervention 12 juin 2012 - 25 janv. 2009 à 22:33
F2000 Messages postés 27 Date d'inscription jeudi 28 juin 2007 Statut Membre Dernière intervention 12 juin 2012 - 26 janv. 2009 à 08:25
Bonjour,

Mon site web (chez OVH) dispose d'une base de données.
Pour une de mes tables j'ai un champ de type TEXT qui contient le texte de mes pages.

Je suis en train d'écrire un article conséquent (40 000 caractères pour le moment) et je viens de m'apercevoir que lors de la sauvegarde de mon article, il me coupe celui-ci vers la fin.

Après recherche, j'ai lu qu'il existait une limite de 8060 octets par ligne de table mais que le champ TEXT autorisait jusqu'à 2 Go de données (soit 1 milliards de caractères d'après le dit-site). Le site parlait aussi d'une option ROW OVERFLOW permettant de passer outre cette limite.

Ma question est donc simple: y'a-t-il un moyen d'augmenter la capacité admise par ma base pour une ligne de table ?

Cordialement,
A voir également:

2 réponses

HostOfSeraphim Messages postés 6750 Date d'inscription jeudi 2 février 2006 Statut Contributeur Dernière intervention 31 juillet 2016 1 608
25 janv. 2009 à 22:37
8060 octets par enregistrement, ça concerne SQL Server... pas forcément les autres SGBD, MySQL dans ton cas je pense. Par ailleurs, ça ne concerne pas les champs de type TEXT (entre autres).

Dans ton cas, tu dois changer la taille de ton champ dans les propriétés de ta table dans PHPMyAdmin.


1
F2000 Messages postés 27 Date d'inscription jeudi 28 juin 2007 Statut Membre Dernière intervention 12 juin 2012 8
26 janv. 2009 à 08:25
OK.
Mais je fais comment pour changer la taille ? Un champ TEXT n'est pas par défaut d'une taille adaptable ?
Je dois spécifier une valeur spécifique ? Car actuellement il me refuse une valeur pour le champ TEXT (ou du moins ne la prend pas en compte).

Ps: Et effectivement j'utilise MySQL et PhpMyAdmin

Edit : Après de nouvelles recherches, MySQL bloque ma requête à 65535 caractères ce qui correspond à la taille limite pour le champ TEXT.
Maintenant je lis sur la doc de MySQL (http://dev.mysql.com/doc/refman/5.0/fr/blob.html) :

"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. See Section 7.5.2, « Réglage des paramètres du serveur ».

Par exemple, mysql et mysqldump vous autorises tous les deux à modifier la valeur cliente de max_allowed_packet."

Mais ça m'étonne quand même que ce soit un problème de buffers...

Votre avis ?

Edit2: Bon finallement, j'ai changé mon type TEXT en LONGTEXT et ça marche. Le programme d'optimisation me conseille même de mettre en MEDIUMTEXT :p
Bref j'aurais au moins appris que le type "TEXT" est pas infini et que y'a plus grand.

Merci ;)
0