Comment forcez-vous la ligne de commande mysql à ne pas demander y / n?
J'ai un script shell qui fait
mysql -uuser -ppass -e "DROP DATABASE IF EXISTS database"
Toutefois, cela amène une invite si vous êtes sûr que vous voulez faire [Y/N]. J'ai besoin de ce script donc, il y a un moyen de forcer l'exécuter? --force
option dans la documentation parle de ne pas s'arrêter pour les erreurs.
EDIT: mysql
client, en fait, ne génère pas d'invite. Il s'avère que j'avais mysqladmin
appel du client qui a généré de l'invite de commandes.
source d'informationauteur mvd
Vous devez vous connecter pour publier un commentaire.
Il est évident que le script shell est en attente pour l'O/N réponse et pas le client MySQL.
Vous devriez être en mesure d'exécuter la ligne directement par copier/coller
à l'invite de commande Linux.
Si vous préférez, où cette commande s'affiche, il suffit de commenter l'O/N réponse du script shell.
Ma prochaine suggestion serait pour vous de regarder dans votre mon.cnf.
Voir si il y a un
[mysql]
ou[client]
section avec les éléments suivants:ou
Ce sont des vraies options: Voir sécurité-les mises à jour et de je-suis-un-mannequin dans la Documentation de MySQL
MISE À JOUR 2013-01-25 16:48 HAE
Mon prochain pense, est le Système d'Exploitation. Pourquoi ???
Si vous êtes sur Linux comme
root
ou vous avez exécutésudo
vous avez incontestée des droits à faire unDROP DATABASE IF EXISTS
. Au niveau de l'OS, mysqld de tenter de jeter le dossier de la base de données.Par exemple, si datadir est
/var/lib/mysql
et que vous exécutezDROp DATABASE IF EXISTS rolando;
mysqld va tenter d'exécuterrm -rf /var/lib/mysql/rolando
.si vous n'êtes pas
root
ousudo
'd commeroot
je m'attends à ce que l'OS d'écho de ce message. En fait, j'ai vu un message de l'OS demander la suppression d'un fichier PID lorsque je n'étais pas connecté en tant que root et la tentative deservice mysql stop
.MISE À JOUR 2013-01-25 16:54 HAE
mysqladmin ne cause pas d'invite, sauf pour les mots de passe. Voici toutes ses options:
HEY, JE SUIS CORRIGÉ
--force
n'invite pour la CHUTE de la BASE de donnéesOK je suppose que vous avez trouvé le coupable. J'ai appris quelque chose aujourd'hui parce que je ne pas utiliser
mysqladmin
pour supprimer les bases de données.Pourriez avoir à pipe, le " oui " dans la ligne de commande. Ce site propose une idée sur comment le faire.
Mais voici une autre ride via ce post.
En général, vous pouvez passer n'importe quel requête à mysql à partir de la coquille avec l'option-e.
Ou vous pouvez Stocker votre mot de passe dans mon.cnf mais son moins sûr.