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


(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, поэтому ваш опыт может отличаться.
Покопавшись в файле sql.el, я нашел переменную, которая позволяет мне указывать порт, когда я пытаюсь создать соединение.
Эта опция была добавлена в GNU Emacs 24.1.
sql-mysql-login-params
List of login parameters needed to connect to MySQL.
Я добавил это в свой файл инициализации Emacs:
(setq sql-mysql-login-params (append sql-mysql-login-params '(port)))
Порт по умолчанию - 0. Если вы хотите установить для него порт MySQL по умолчанию, вы можете настроить sql-port.
(setq sql-port 3306) ;; default MySQL port
В GNU Emacs 24.1 есть переменная sql-*-login-params для всех популярных систем RDMS. sql-port используется как для MySQL, так и для PostreSQL
@seriyPS спасибо! обратите внимание, что вы также можете обернуть его в (with-eval-after-load "sql" ... который затем выполнит код только тогда, когда пакет sql действительно загружен
Спасибо! Некоторые примечания: чтобы указать порт по умолчанию, вы можете использовать конструкцию вроде
(add-to-list 'sql-postgres-login-params '(port :default 5432))(обратите внимание на тег:default). И вы должны добавить(require 'sql)передadd-to-list, иначе вы получите ошибку «Значение символа как переменной недействительно: sql-mysql-login-params»