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 :
Jusque là, tout va bien.
Code : Sélectionner tout - Visualiser dans une fenêtre à part SHOW COLUMNS IN article WHERE TYPE LIKE 'varchar%' OR TYPE LIKE 'text';
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 :
J'obtiens comme résultat :
Code : Sélectionner tout - Visualiser dans une fenêtre à part SHOW COLUMNS IN article;
Ici, la clé est 'art_id', je cherche donc la requête qui va me permettre de la trouver.Field/Type/Null/Key/...
art_id/int(10) unsigned/NO/PRI
pas_id/int(10) unsigned/NO/MUL
...
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![]()
Partager