Oct/0810
Je hais phpMyAdmin
Je hais phpMyAdmin. Ironiquement, je m’en sers encore beaucoup et pour me contredire davantage, je vais même avouer que c’est “relativement” un bon outil. Mais je le hais quand même.
PhpMyAdmin est l’outil qui m’a fait découvrir MySQL lorsque j’étais encore à l’école. C’est un outil idéal pour débuter en développement Web puisqu’il est intégré à des logiciels comme easyphp ou est souvent ajouté à LAMP (Linux Apache MySQL PHP). L’outil est convivial et permet de faire beaucoup d’opérations, même pour un utilisateur inexpérimenté en SQL. Plusieurs hébergeurs Web l’offrent dans leurs plans puisqu’il est gratuit, simple à installer et facile à maintenir.
Mais quand on connait bien le SQL, plus précisément MySQL, et qu’on s’en sert régulièrement comme je le fais, on en vient à constater ses lacunes. Donc, dans le top 5 des choses que je déteste de phpMyAdmin:
- La création des Foreign Key
Il n’y a rien de plus simple dans phpMyAdmin que de créer une base de données et des tables. Pourtant, appliquer les concepts de clés étrangères est un exercice complexe qu’il n’est pas possible de faire à la création de la table. Une des plus grandes forces de phpMyAdmin est donc intimement liée à une de ses plus grandes faiblesses. Ce manque incite les nouveaux utilisateurs de MySQL à ne pas créer de clés étrangères. - Les int(11)
Je vois régulièrement des int(11) chez les utilisateurs de phpMyAdmin. Contrairement au char et varchar, la “longueur” des types numérique n’est pas une limite imposée. Un int(9) unsigned possède le même nombre maximal qu’un int(11). L’ironie, c’est que la longueur maximale d’un int unsigned, 4294967295, est de 10 chiffres ce qui fait de la valeur par défaut de phpMyAdmin, le int(11), un non-sens. Le seul et unique impact du nombre qu’on peut attribuer à un type numérique est lorsqu’on utilise l’attribut Zerofill. Dans ce cas, le nombre sera “padder” de 0 jusqu’à la longueur désirée. Onze (11) n’est pas une limite non plus. J’ai créé un int(100) unsigned zerofill, inséré la valeur 1, et il y avait bien 99 zéros devant mon 1 lorsque j’ai fait un SELECT. Le comportement par défaut de phpMyAdmin est trompeur. - Les LIMIT 0,30
Pour que le résultat d’une requête s’affiche rapidement, phpMyAdmin n’affiche pas la totalité des enregistrements. Il ajoute automatiquement un “LIMIT 0,30″ à chaque requête. La différence sur le temps d’exécution est remarquable, mais cette technique n’est vraiment pas pratique. - Son dynamisme
Je donne 2 sur 10 au dynamisme. J’ai eu un “vieux” phpMyAdmin designé pour MySQL 4 qui se connectait à un MySQL 5. Beaucoup de nouveaux status (show [global] status) et de nouvelles variables (show [global] variables) n’étaient pas présents dans la page qui sert à les afficher. Pourtant, si on exécute la requête manuellement les valeurs sont bien présentes. Rien de très dynamique là dedans. De plus, j’aimerais avoir accès à un “textbox” en tout temps dans le but de taper des requêtes SQL. Actuellement, je dois cliquer sur la section “SQL” qui pop une fenêtre et le résultat de celle-ci s’affiche dans une nouvelle page. Je déplore aussi le fait que je dois constamment modifier le fameux LIMIT 0,30 pour mettre une autre limit, forçant à ré-exécuter la requête et réafficher le résultat. Ce sont des choses qui pourraient aisément être évitées grâce à AJAX. - Sa facilité à commettre des gaffes
Deux cliques, c’est suffisant pour supprimer des rows, vider une table ou même une base de données entière ! Lorsqu’on tape les statements dans le CLI, nous sommes beaucoup plus alertes et conscients de ce que nous faisons. Nous perdons un peu le sens des responsabilités avec phpMyAdmin car on clique, clique et clique encore et on finit par commettre des choses irréversibles, rapidement. L’interface de gestion des privilèges est chaotique. Je préfère de loin créer les privilèges en tapant directement les statements nécessaires pour être sur de ne pas commettre d’erreur.
En résumé, phpMyAdmin demeure en bon outil malgré tout, mais ces 5 points me font rager plusieurs fois par semaine. Les outils fournir par MySQL possèdent beaucoup de faiblesses (et de bugs!). À défaut d’avoir de meilleurs outils graphiques, j’alterne entre le client en command line (le “CLI”) et phpMyAdmin.