Publi

Utilizar una conexión MySQL desde EMACS

Encontré hace tiempo en una página que, lamentablemente, ya no está operativa una forma de utilizar EMACS como cliente MySQL, aunque intentaré ampliar dicha información con alguna experiencia personal. Aunque podemos utilizar directamente el SQL mode, es muy incómodo porque cada vez que nos queramos conectar tenemos que dar todos los datos de la conexión, y eso nos hace perder la paciencia a más de uno. Es verdad que para una conexión esporádica no está mal, pero si te sueles conectar siempre a los mismos servidores, esto puede resultar muy útil.

Debemos incluir en nuestro $HOME/.emacs todas las «conexiones amigas» que queramos tener de la siguiente manera:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
 (setq mysql-connections-list
'((mediacenter
(sql-product 'mysql)
(sql-server "192.168.0.1")
(sql-user "root")
(sql-password "password")
(sql-database "")
(sql-port 3306))
(local_trabajo
(sql-product 'mysql)
(sql-server "localhost")
(sql-user "root")
(sql-password "p4ssw0rd")
(sql-database "")
(sql-mysql-options '("--socket" "/tmp/mysql_sandbox5165.sock"))
(sql-port 5165))
(local_proyectos
(sql-product 'mysql)
(sql-server "localhost")
(sql-user "root")
(sql-password "contraseña")
(sql-database "")
(sql-mysql-options '("--socket" "/tmp/mysql_sandbox5166.sock"))
(sql-port 5166))))

En este caso tenemos 3 conexiones, la primera de ellas corresponde con el servidor MySQL del equipo que tengo como mediacenter, para la segunda y la tercera, en mi ordenador tengo dos servidores MySQL corriendo en sandbox, así aíslo el servidor de trabajo con el de mis proyectos personales (y el que usan varias aplicaciones de escritorio, que no lo he metido en EMACS). Para conectar a los servidores sandbox puedo establecer los argumentos que debo pasarle a mysql en sql-mysql-options, en este caso el socket a utilizar, cada argumento irá separado, aunque la sentencia –socket /direccion/del/socket.scok vaya seguida en la línea de comandos; además, debe ir expresada en forma de lista en Lisp.

Una vez tengamos esto, debemos, habilitar llamadas que nos permitan abrir cada una de las conexiones:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
(defun sql-connect-preset (name)
"Connect to a predefined SQL connection listed in `mysql-connections-list'"
(eval `(let ,(cdr (assoc name mysql-connections-list))
(flet ((sql-get-login (&rest what)))
(sql-product-interactive sql-product)))))

(defun mysql-mediacenter ()
(interactive)
(sql-connect-preset 'mediacenter))

(defun mysql-trabajo ()
(interactive)
(sql-connect-preset 'local_trabajo))

(defun mysql-proyectos ()
(interactive)
(sql-connect-preset 'local_proyectos))

Por tanto, a partir de ahora, puedo llamar con M-x a cada una de las conexiones, mysql-mediacenter, mysql-trabajo, mysql-proyectos y puedo empezar a trabajar con ellas, eso sí, tecleando mucho SQL, pero aprovechando la potencia de EMACS.

También podría interesarte....

There are 4 comments left Ir a comentario

  1. Pingback: Bitacoras.com /

  2. papa's pizzeria /
    Usando Google Chrome Google Chrome 116.0.0.0 en Windows Windows NT

    Comprendo que estás interesado en explorar la metodología más eficiente para establecer conexión con tus servidores de MySQL, utilizando EMACS como cliente. A pesar de que la página a la que haces referencia hoy no se encuentra accessible, estaré encantado de asistirte en la búsqueda de una solución.

  3. Mike Rooney /
    Usando Google Chrome Google Chrome 118.0.0.0 en Windows Windows NT

    I found this post very exciting. I am also sending it to my friends to enjoy this blog. Mrs Claus Coat

  4. Andrew Mark /
    Usando Google Chrome Google Chrome 118.0.0.0 en Windows Windows NT

    Excellent article. The writing style which you have used in this article is very good and it made the article of better quality.
    Yellowstone Merchandise

Leave a Reply