Bonjour à tous,

Je dois faire une moulinette pour mettre à jour les tables de plusieurs bases de données. Pour ce faire, je dois utiliser une approche générique, pas question de corriger ça manuellement table par table et colonne par colonne.

J'ai donc commencé un script (en PHP) pour cela.
Je commence par récupérer les tables de chaque base par un SHOW TABLES.
Pour chaque table, le SHOW COLUMNS me permet d'identifier les champs texte que je dois modifier :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
SHOW COLUMNS IN article WHERE TYPE LIKE 'varchar%' OR TYPE LIKE 'text';
Jusque là, tout va bien.
Mais pour pouvoir faire mon UPDATE, je dois aussi récupérer la ou les colonnes qui servent de clé et c'est là que le bât blesse.

Soit par exemple la requête :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
SHOW COLUMNS IN article;
J'obtiens comme résultat :
Field/Type/Null/Key/...
art_id/int(10) unsigned/NO/PRI
pas_id/int(10) unsigned/NO/MUL
...
Ici, la clé est 'art_id', je cherche donc la requête qui va me permettre de la trouver.

J'ai essayé :
SHOW COLUMNS IN article WHERE Key = PRI;
SHOW COLUMNS IN article WHERE Key = 'PRI';
SHOW COLUMNS IN article WHERE Key IS PRI;

...en vain : les requêtes ne sont pas valides.

Et je ne trouve pas la syntaxe appropriée. Si quelqu'un connait la manipulation, un coup de main serait le bienvenu