Я использовал интерактивный режим sql Emacs для общения с сервером 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-логин-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-params
GNU Emacs 24.1 есть переменная для всех популярных систем RDMS. sql-port
используется как для MySQL, так и для PostreSQL
(add-to-list 'sql-postgres-login-params '(port :default 5432))
(обратите внимание на:default
тег). И вы должны добавить(require 'sql)
раньшеadd-to-list
, иначе вы получите ошибку «Значение символа как переменная void: sql-mysql-login-params»(with-eval-after-load "sql"
…, который будет выполнять код только тогда, когдаsql
пакет действительно загружен