MYSQL Suppression et Creation conditionnel

Fermé
pcouas Messages postés 25 Date d'inscription lundi 22 mars 2010 Statut Membre Dernière intervention 9 janvier 2022 - 23 oct. 2010 à 07:39
 pcouas - 29 oct. 2010 à 13:17
Bonjour,

Quel est la syntaxe pour gerer une erreur sur un DROP USER ou un REVOKE de droits ci ceux ci n'existe pas sans que mon script SQL ne s'arrete ?

Merci d'avance
Philippe


J'ai essaye sans succes cela mysql -u root -p</tmp/essai.sql

le fichier essai.sql

IF EXISTS(SELECT User FROM mysql.USER WHERE User='user1') THEN
DELETE FROM mysql.USER WHERE user='user1' AND host='localhost';
FLUSH PRIVILEGES;
DROP USER 'user1'@'localhost';
END IF;

celui ci nonplus ?
IF EXISTS(SELECT user FROM mysql.user WHERE user='user1') THEN
DROP user 'user1'@'localhost';
END IF;
A voir également:

4 réponses

Il me semblait qu'en MySQL la commande IF est de ce genre

IF(condition, true, false)
0
pcouas Messages postés 25 Date d'inscription lundi 22 mars 2010 Statut Membre Dernière intervention 9 janvier 2022
Modifié par pcouas le 24/10/2010 à 09:41
Bonjour,

J'ai essaye ceci sans succes

IF((SELECT count(*) FROM mysql.USER WHERE user='user1')>0,
REVOKE ALL PRIVILEGES ON DB.* FROM 'user1'@'localhost';
REVOKE ALL PRIVILEGES ON DB.* FROM 'user1'@'%';
DELETE FROM mysql.USER where user='user1';
FLUSH PRIVILEGES;
DROP USER 'user1'@'localhost';
DROP USER 'user1'@'%';,,)
0
Et si tu fait plutôt

CASE WHEN (SELECT count(*) FROM mysql.USER WHERE user='user1')>0)  
THEN  
   REVOKE ALL PRIVILEGES ON DB.* FROM 'user1'@'localhost';   
   REVOKE ALL PRIVILEGES ON DB.* FROM 'user1'@'%';   
   DELETE FROM mysql.USER where user='user1';   
   FLUSH PRIVILEGES;   
   DROP USER 'user1'@'localhost';   
   DROP USER 'user1'@'%';  
END; 


https://dev.mysql.com/doc/refman/8.0/en/control-flow-functions.html
0
pcouas Messages postés 25 Date d'inscription lundi 22 mars 2010 Statut Membre Dernière intervention 9 janvier 2022
25 oct. 2010 à 06:35
Bonjour

pour l'instant cela me donne une erreur
ERROR 1064 (42000) at line 1: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'CASE WHEN (SELECT count(*) FROM mysql.USER WHERE user='user1')>0)
THEN
RE' at line 1
0
Je lance la commande depuis un fichier .sql en faisant
mysql -u root -p </tmp/es.sql
Peut etre me faut il des commandes en plus ?
J'utilise Mysql 5.1

Merci
0