2011-03-10 3 views
0

J'ai de nombreuses bases de données et dans chacun j'ai la table names. Dans certains j'ai UNIQUE KEY nommé name1 et dans d'autres la même clé unique est nommé name2. Je veux à la norme ce nom donc je prépare 3 requêtes à exécuter sur chaque base de données:MySQL: ALTER IGNORE TABLE avec DROP INDEX

ALTER IGNORE TABLE `names` 
    DROP INDEX `name1`; 
ALTER IGNORE TABLE `names` 
    DROP INDEX `name2`; 
ALTER TABLE `names` 
    ADD UNIQUE `new_name` (`name`, `surname`); 

Mais je me suis erreur:

SQL Error (1091): Can't DROP 'name1'; check that column/key exists 

Comment puis-je faire un ensemble de requêtes à exécuter sur chaque base de données?

+0

Alors, quelle est la question? Comment ignorer l'erreur, ou comment exécuter la requête dans chaque base de données? – azat

Répondre

3

Vous pouvez essayer d'ignorer les erreurs si vous l'exécution de votre fichier de script SQL de la ligne de commande:

mysql -f -u username -p password -e 'source script.sql' 

EDIT

Merci à Ike, la bonne façon de faire est:

mysql -f -u username -p password < script.sql 
+1

En fait, cela ne fonctionnera pas s'il y a plus d'une erreur. Il va avorter après la première erreur. La bonne façon d'ignorer les erreurs dans script.sql est: 'mysql -f -u nom d'utilisateur -p mot de passe

+0

Merci, j'ai modifié ma réponse – JamesHalsall