2010-07-19 3 views
3

Lorsque j'essaie d'exécuter un processus psql inférieur dans emacs sous Windows, il semble que je ne reçois aucune réponse. Cela semble être un known problem dont la solution est d'installer la version cygwin de psql. Malheureusement, le cygwin psql semble ne rien faire, même psql -V ne fait rien. Est-ce que quelqu'un a une solution à l'un de ces problèmes ou un moyen facile d'envoyer des requêtes d'emacs à postgresql.Exécution de sql-postgres M-x dans emacs sur Windows

Répondre

1

Ok, j'ai enfin compris comment faire tourner cygwin psql. Il semble que la condition cygpq.dll manquait un point d'entrée,

strace -o /dev/null psql --version 

a répondu avec « Le point d'entrée de procédure PQencryptPassword ne pouvait pas se trouver dans la bibliothèque de liens dynamiques cygpq.dll. »

J'ai remplacé le fichier cygpq.dll fourni par cygwin avec un fichier compilé localement et il semble que nous cuisinions maintenant avec du gaz. J'ai besoin d'en savoir plus sur la liaison dynamique cygwin. Je vous remercie tous pour votre soutien patient.

1

Cela ne va probablement pas être une bonne réponse, mais je ne suis pas actuellement sur une machine Windows avec Emacs ou PostGres, donc je ne peux pas trouver une meilleure solution pour vous.

Cela dit, êtes-vous capable d'exécuter psql dans un shell de commande? Si oui, peut-être vous pouvez essayer de démarrer le shell (M-x shell) ou le Eshell (M-x eshell) pour démarrer un shell inférieur et exécuter psql à partir de là.

À l'origine, je suggérais que vous appeliez M-x shell-command (également M-!), puis de spécifier psql & pour votre commande. Le & indique à Emacs que vous voulez exécuter la commande shell de manière asynchrone. Cependant, this entry sur EmacsWiki indique qu'il ne fonctionnera pas sous Windows. Vous pouvez l'essayer de toute façon et voir ce qui se passe ...

+0

Malheureusement, je vois le même comportement pour la commande cygwin psql ou celle de Windows dans l'interpréteur de commande emacs, que j'aie exécuté cygwin bash ou l'interpréteur de commandes Windows. La même chose arrive avec M-! avec soit le cygwin soit Windows psql (le & works, je pense parce que j'ai emacs en utilisant le bash cygwin par défaut.) Je suppose que je suis coincé en utilisant mon ordinateur portable Linux pour faire le travail. Merci pour la tentative – deinst

+0

Mais cela fonctionne-t-il si vous essayez simplement d'exécuter psql à partir d'un shell de commande Windows qui ne se trouve pas dans emacs? –

+0

Oui, le Windows fait, le cygwin ne fait pas. Le problème avec les fenêtres a quelque chose à voir avec readline manquant et se comporter étrangement dans ce qu'il pense être des coquilles non interactives. – deinst

1

J'ai rencontré un problème similaire (mais je n'ai pas réussi à faire fonctionner cygwin psql).

Finalement, j'ai découvert que M-x sql-postgres et psql appel dans M-x shell sont en fait interactifs mais sans invite visible; c'est-à-dire que l'on peut taper des commandes (au tout début de la dernière ligne) et qu'elles sont exécutées comme prévu.

avant que je réalise que j'avais modifié mon postgres fichier de mot de passe afin d'éviter l'invite de mot de passe et le blocage initial de l'appel psql en Mx shell:

Lorsque les valeurs par défaut ne sont pas tout à fait raison, vous pouvez économiser En tapant vous-même les variables d'environnement PGDATABASE, PGHOST, PGPORT et/ou PGUSER aux valeurs appropriées. (Pour les variables d'environnement supplémentaires, voir la documentation.) Il est également pratique d'avoir un fichier ~/.pgpass pour éviter de taper régulièrement des mots de passe. Voir la documentation pour plus d'informations. (http://linux.die.net/man/1/psql)