Укажите номер порта в Emacs sql-mysql

Я использовал интерактивный режим sql Emacs для общения с сервером MySQL db и получил удовольствие от этого. Разработчик настроил еще одну базу данных на новый номер порта по умолчанию, но я не знаю, как получить к нему доступ с помощью sql-mysql.

Как мне указать номер порта, когда я пытаюсь подключиться к базе данных?

Было бы еще лучше, если бы Emacs мог запросить у меня номер порта и просто использовать значение по умолчанию, если я не укажу. Есть шансы на это?

15.08.2008 19:12:24
3 ОТВЕТА
(setq sql-mysql-options (list "-P <port number>"))
8
11.08.2012 15:45:53

Я нашел вариант, используя:

M-x customize-group
SQL

Это включает настройку с надписью:

Mysql Options:

Если вы установите опцию и сохраните ее, в ваш .emacs будет добавлена ​​новая строка:

(custom-set-variables
 '(sql-mysql-options (quote ("-P ???"))))

(Очевидно, вы должны использовать фактический номер порта.)

Я использую XEmacs, поэтому ваш пробег может отличаться.

6
15.08.2008 19:51:45
РЕШЕНИЕ

Покопавшись в файле sql.el, я нашел переменную, которая позволяет мне указывать порт при попытке создать соединение.

Эта опция была добавлена ​​GNU Emacs 24.1.

SQL-MySQL-логин-PARAMS

Список параметров входа, необходимых для подключения к MySQL.

Я добавил это в мой файл инициализации Emacs:

(setq sql-mysql-login-params (append sql-mysql-login-params '(port)))

Порт по умолчанию - 0. Если вы хотите установить порт MySQL по умолчанию, вы можете настроить sql-port

(setq sql-port 3306) ;; default MySQL port

В sql-*-login-paramsGNU Emacs 24.1 есть переменная для всех популярных систем RDMS. sql-portиспользуется как для MySQL, так и для PostreSQL

12
21.09.2012 21:58:36
Спасибо! Некоторые примечания: для указания порта по умолчанию вы можете использовать конструкцию like (add-to-list 'sql-postgres-login-params '(port :default 5432))(обратите внимание на :defaultтег). И вы должны добавить (require 'sql)раньше add-to-list, иначе вы получите ошибку «Значение символа как переменная void: sql-mysql-login-params»
seriyPS 27.06.2013 17:02:52
@seriyPS спасибо! обратите внимание, что вы также можете заключить его в (with-eval-after-load "sql"…, который будет выполнять код только тогда, когда sqlпакет действительно загружен
Sam Mason 21.11.2016 14:40:21