Comment forcer mysql.exe à fonctionner en mode “interactif”?

Je voudrais que le mode sql-mysql d’emac fonctionne dans Windows XP. Je suis capable d’entrer en mode sql-mysql et de me connecter à la firebase database mysql avec succès. Le problème est que le tampon SQL n’affiche pas l’invite “mysql>”. En d’autres termes, il n’interagit pas avec mysql.exe.

Je pense que c’est parce que le programme mysql.exe est en mode “non interactif” quand il est démarré en coulisse par emacs.

Aucune des options de mysql ne semble être utile.

Des idées sur la façon de résoudre ce problème? Je peux voir cela comme un problème pour le mode comac emacs qui interagit également avec d’autres utilitaires de ligne de commande dans Windows, alors peut-être y a-t-il une solution de niveau os?

Le problème est que le terminal intégré emacs utilise des canaux pour communiquer avec le processus client. Mysql.exe est un programme Windows natif, donc isatty () vérifie réellement si le descripteur de fichier / handle en question est une console. Cela échoue sur les pipes, donc mysql passe en mode batch. Je ne peux pas voir un moyen de forcer le mode interactif non plus. Honte, car ce serait sans doute sortingvial à mettre en œuvre.

L’exécuter dans xterm ou un autre terminal basé sur Cygwin ptys affichera le même problème, car l’émulation pty de Cygwin est basée sur des canaux Windows.

Il n’y a aucun moyen si vous ne l’exécutez pas depuis un (pseudo) terminal. Il vérifie les descripteurs de fichiers 0 1 par isatty et définit le mode batch si au moins l’un d’entre eux n’est pas un terminal. De l’autre côté, vous pouvez forcer le mode de traitement par lots.

Quoi qu’il en soit, cela est tout à fait logique, car readline qui est utilisé pour les inviter a besoin d’un terminal pour fonctionner raisonnablement. Donc, la bonne façon de résoudre ce problème est de l’exécuter dans un pseudoterminal.