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

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

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

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

Ответов (3)

Решение

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

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

sql-mysql-логин-параметры

Список параметров входа в систему, необходимых для подключения к 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-params GNU Emacs 24.1 есть переменная для всех популярных систем RDMS. sql-port используется как для MySQL, так и для PostreSQL

(setq sql-mysql-options (list "-P <port number>"))

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

M-x customize-group
SQL

Это включало настройку, помеченную:

Mysql Options:

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

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

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

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