您的位置:首页 > 数据库 > MySQL

10、MySQL 8.0参考手册 4.5.1.6 mysql提示

2018-03-21 14:51 381 查看

4.5.1.6 mysql提示

本节介绍一些可以帮助您更有效地使用mysql的技术 。4.5.1.6.1输入行编辑mysql支持输入行编辑,使您可以修改当前输入行或调用以前的输入行。例如, 左箭头 键和右箭头键在当前输入行内水平移动,并且 向上箭头键和向下箭头键在上一组输入行中上下移动。 Backspace在光标前删除字符,并在光标位置输入新字符。要输入该行,请按 Enter键。在Windows上,编辑键序列与控制台窗口中命令编辑支持的相同。在Unix上,键序列取决于用于构建mysql的输入库 (例如, 
libedit
readline
 库)。这些
libedit
和 
readline
库的文档可在线获取。要更改给定输入库允许的键序列集,请在库启动文件中定义键绑定。这是您的主目录中的文件:
.editrc
 for 
libedit
和 
.inputrc
for 
readline
。例如,在中
libedit
, Control + W会删除当前光标位置前的所有内容,而Control + U会删除整行。In 
readline
, Control + W删除光标前的单词,Control + U删除当前光标位置前的所有内容。如果使用mysql构建
libedit
,那么喜欢
readline
这两个键行为的用户 可以在
.editrc
 文件中放入以下行(如果需要,可以创建该文件):
bind "^W" ed-delete-prev-word
bind "^U" vi-kill-line-prev
要查看当前的一组键绑定,请暂时放置仅
bind
在最后显示的行 
.editrc
mysql会在启动时显示绑定。4.5.1.6.2 Windows上的Unicode支持Windows提供基于UTF-16LE的API以读取和写入控制台; Windows 的mysql客户端可以使用这些API。Windows安装程序在名为的MySQL菜单中创建一个项目
MySQL command line client - Unicode
。该项调用 mysql客户端,其属性设置为使用Unicode通过控制台与MySQL服务器进行通信。要手动利用此支持,请在使用兼容Unicode字体的控制台中运行 mysql,并将默认字符集设置为支持与服务器通信的Unicode字符集:打开一个控制台窗口。
转到控制台窗口属性,选择字体选项卡,并选择Lucida控制台或其他兼容的Unicode字体。这是必要的,因为控制台窗口默认使用不适用于Unicode的DOS光栅字体启动。
用 (或)选项 执行mysql.exe。该选项是必需的,因为不支持作为连接字符集。 
--default-character-set=utf8
utf8mb4
utf16le

通过这些更改,mysql将使用Windows API使用UTF-16LE与控制台进行通信,并使用UTF-8与服务器进行通信。(之前提到的菜单项设置了刚描述的字体和字符集。)为了避免每次运行mysql时执行这些步骤 ,可以创建一个调用mysql.exe的快捷方式。快捷方式应该将控制台字体设置为Lucida控制台或其他兼容的Unicode字体,并将
--default-character-set=utf8
(或 
utf8mb4
)选项传递 给 mysql.exe。或者,创建一个仅设置控制台字体的快捷方式,并在
[mysql]
您的
my.ini
文件组中 设置字符集 :
[mysql]
default-character-set=utf8
4.5.1.6.3垂直显示查询结果垂直显示时,某些查询结果更易读,而不是通常的水平表格格式。通过用\ G代替分号来终止查询,可以垂直显示查询。例如,包含换行符的较长文本值通常更容易用垂直输出读取:
mysql> SELECT * FROM mails WHERE LENGTH(txt) < 300 LIMIT 300,1\G
*************************** 1. row ***************************
msg_nro: 3068
date: 2000-03-01 23:29:50
time_zone: +0200
mail_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 familiar
Thimble> with UTF-8 or Unicode? Otherwise, I'll put this on my
Thimble> TODO list and see what happens.

Yes, please do that.

Regards,
Monty
file: inbox-jani-1
hash: 190402944
1 row in set (0.09 sec)
4.5.1.6.4使用--safe-updates选项对于初学者来说,一个有用的启动选项是 
--safe-updates
(或者 
--i-am-a-dummy
,具有相同的效果)。这对于您可能发表声明但忘记该条款的情况很有帮助。通常,这样的语句会删除表中的所有行。使用 ,您只能通过指定标识它们的键值来删除行。这有助于预防事故。 
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.5节“服务器系统变量”。该 
SET
 声明具有以下效果:除非您在 子句中指定关键限制或提供子句(或两者),否则您 不得执行 语句
UPDATE
或 
DELETE
语句。例如: 
WHERE
LIMIT
UPDATE tbl_name SET not_key_column=val WHERE key_column=val;

UPDATE tbl_name SET not_key_column=val LIMIT 1;

服务器将所有大型
SELECT
结果限制 为1,000行,除非该语句包含 
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
4.5.1.6.5禁用mysql自动重新连接如果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 away
No connection. Trying to reconnect...
Connection id:    1
Current database: test

Query 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
。本文由学什么技术好提供翻译有关重新连接时自动重新连接及其对状态信息的影响的更多信息,请参见 第28.7.24节“C API自动重新连接控制”
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: