Spec-Zone .ru
спецификации, руководства, описания, API
|
Этот раздел описывает некоторые методы, которые могут помочь Вам использовать mysql эффективнее.
mysql поддерживает редактирование входной строки, которое позволяет Вам изменить текущую входную строку на месте или вспомнить предыдущие входные строки. Например, стрелка влево и клавиши со стрелкой вправо перемещаются горизонтально в пределах текущей входной строки, и-arror и перемещение клавиш со стрелкой вниз вверх и вниз через набор ранее вводимых строк. Клавиша Backspace удаляет символ перед курсором, и ввод новых символов вводит их в позиции курсора. Чтобы ввести строку, нажатие Входит.
На Windows последовательности клавиши для редактирования являются тем же самым как поддерживающийся для
редактирования команды в консолях. На Unix сочетания клавиш зависят от входной библиотеки, пользовавшейся,
чтобы создать mysql (например, libedit
или readline
библиотека).
Документация для libedit
и readline
библиотеки
доступны онлайн. Чтобы изменить набор сочетаний клавиш, разрешенных данной входной библиотекой, определите
привязки клавиш в файле запуска библиотеки. Это - файл в Вашем корневом каталоге: .editrc
для libedit
и .inputrc
для readline
.
Например, в libedit
, Control+W
удаляет все перед текущей позицией курсора, и Control+U удаляет
всю строку. В readline
, Control+W
удаляет слово перед курсором, и Control+U удаляет все перед
текущей позицией курсора. Если mysql был создан, используя libedit
,
пользователь, который предпочитает readline
поведение для этих двух ключей
может вставить следующие строки .editrc
файл (создающий файл в случае
необходимости):
bind "^W" ed-delete-prev-wordbind "^U" vi-kill-line-prev
Чтобы видеть текущий набор привязок клавиш, временно поместите строку, которая говорит только bind
в конце .editrc
. mysql покажет привязку, когда он запустится.
Windows обеспечивает API, основанные на UTF-16LE для того, чтобы читать из и записать в консоль. С MySQL
5.6.2 mysql клиент для Windows в состоянии использовать эти
API. С 5.6.3, Установщик Windows создает элемент в названном меню MySQL MySQL command
line client - Unicode
. Этот элемент вызывает mysql клиент с набором свойств, чтобы связаться через
консоль с сервером MySQL, используя Unicode.
Чтобы использовать в своих интересах эту поддержку вручную, выполните mysql в пределах консоли, которая использует совместимый шрифт Unicode и устанавливает набор символов значения по умолчанию в набор символов Unicode, который поддерживается для передачи с сервером:
Откройте консоль.
Пойдите в свойства консоли, выберите вкладку шрифта, и выберите Консоль Lucida или некоторый другой совместимый шрифт Unicode. Это необходимо, потому что консоли запускаются значением по умолчанию, используя растровый шрифт DOS, который является несоответствующим для Unicode.
Выполнитесь mysql.exe с --default-character-set=utf8
(или utf8mb4
)
опция. Эта опция необходима потому что utf16le
не поддерживается как
набор символов соединения.
С теми изменениями mysql будет использовать API Windows, чтобы связаться с консолью, используя UTF-16LE, и связаться с сервером, используя UTF-8. (Пункт меню, упомянутый ранее, устанавливает набор шрифтов и набор символов как только описано.)
Чтобы избежать тех шагов каждый раз, когда Вы выполняете mysql, можно создать ярлык, который вызывает mysql.exe. Ярлык должен установить консольный шрифт в
Консоль Lucida или некоторый другой совместимый шрифт Unicode, и передать --default-character-set=utf8
(или utf8mb4
)
опция к mysql.exe.
Альтернативно, создайте ярлык, который только устанавливает консольный шрифт, и устанавливает набор символов
в [mysql]
группа Вашего my.ini
файл:
[mysql]default-character-set=utf8
Некоторые результаты запроса намного больше читаемы когда выведено на экран вертикально, вместо в обычном горизонтальном формате таблицы. Запросы могут быть выведены на экран вертикально, завершая запрос с \G вместо точки с запятой. Например, более длинные текстовые значения, которые включают новые строки часто, намного легче считать с вертикальным выводом:
mysql> SELECT * FROM mails WHERE LENGTH(txt) <
300 LIMIT 300,1\G
*************************** 1. row *************************** msg_nro: 3068 date: 2000-03-01 23:29:50time_zone: +0200mail_from: Monty reply: monty@no.spam.com mail_to: "Thimble Smith" <tim@no.spam.com> sbj: UTF-8 txt: >>>>> "Thimble" == Thimble Smith writes:Thimble> Hi. I think this is a good idea. Is anyone familiarThimble> with UTF-8 or Unicode? Otherwise, I'll put this on myThimble> TODO list and see what happens.Yes, please do that.Regards,Monty file: inbox-jani-1 hash: 1904029441 row in set (0.09 sec)
--safe-updates
Опция Для новичков полезная опция запуска --safe-updates
(или --i-am-a-dummy
, который имеет тот же самый эффект). Полезно для случаев, когда
Вы, возможно, выпустили a DELETE FROM
оператор, но забытый tbl_name
WHERE
пункт. Обычно, такой оператор удаляет все строки из таблицы. С --safe-updates
, можно удалить строки только, определяя значения ключа,
которые идентифицируют их. Это помогает предотвратить несчастные случаи.
Когда Вы используете --safe-updates
опция, mysql делает следующее заявление, когда это соединяется
с сервером MySQL:
SET sql_safe_updates=1, sql_select_limit=1000, max_join_size=1000000;
См. Раздел 5.1.4, "Системные Переменные Сервера".
SET
оператор имеет следующие эффекты:
Вам не разрешают выполниться UPDATE
или DELETE
оператор, если Вы не определяете ключевое ограничение в WHERE
пункт или
обеспечивает a LIMIT
пункт (или оба). Например:
UPDATEtbl_name
SETnot_key_column
=val
WHEREkey_column
=val
;UPDATEtbl_name
SETnot_key_column
=val
LIMIT 1;
Сервер ограничивает всех больших SELECT
результаты к 1 000 строк, если оператор не включает a LIMIT
пункт.
Сервер прерывает многократную таблицу SELECT
операторы, которые, вероятно, должны исследовать больше чем 1
000 000 комбинаций строки.
Чтобы определить пределы, отличающиеся от 1 000 и 1 000 000, можно переопределить значения по умолчанию при
использовании --select_limit
и --max_join_size
опции:
shell> mysql --safe-updates --select_limit=500
--max_join_size=10000
Если mysql клиент теряет его соединение с сервером, отправляя оператор, это сразу и автоматически пытается повторно соединиться однажды с сервером и отправить оператор снова. Однако, даже если mysql преуспевает в том, чтобы повторно соединиться, Ваше первое соединение закончилось и все Ваши предыдущие объекты сеанса, и настройки теряются: временные таблицы, режим автоматической фиксации, и определяемый пользователем и переменные сеанса. Кроме того, любая текущая транзакция откатывает. Это поведение может быть опасным для Вас, как в следующем примере, где сервер был выключен и перезапущен между первыми и вторыми операторами без Вас знающий это:
mysql>SET @a=1;
Query OK, 0 rows affected (0.05 sec)mysql>INSERT INTO t VALUES(@a);
ERROR 2006: MySQL server has gone awayNo connection. Trying to reconnect...Connection id: 1Current database: testQuery OK, 1 row affected (1.30 sec)mysql>SELECT * FROM t;
+------+| a |+------+| NULL |+------+1 row in set (0.05 sec)
@a
пользовательская переменная была потеряна с соединением, и после
пересоединения, это неопределено. Если важно иметь mysql, оконечный с ошибкой, если соединение было
потеряно, можно запустить mysql клиент с --skip-reconnect
опция.
Для получения дополнительной информации о % автоповторно соединяются и его эффект на информацию о состоянии, когда пересоединение происходит, см. Раздел 22.8.16, "Управляя Автоматическим Поведением Пересоединения".