5.5 代码历史

您在 MySQL Shell 中发出的代码存储在历史记录中,然后可以使用向上和向下箭头键访问它。您还可以使用增量历史搜索功能搜索历史。要搜索历史记录,请使用Ctrl+R向后搜索,或使用Ctrl+S向前搜索历史记录。搜索处于活动状态后,键入字符会搜索历史记录中与它们匹配的任何字符串并显示第一个匹配项。使用Ctrl+SCtrl+R搜索当前搜索词的更多匹配项。输入更多字符可进一步优化搜索。在搜索过程中,您可以按箭头键从当前搜索结果继续浏览历史记录。按 Enter 键接受显示的匹配项。使用Ctrl+C 取消搜索。

history.maxSizeMySQL Shell 配置选项设置要存储在历史记录中的最大条目数 。默认值为 1000。如果历史记录条目数超过配置的最大值,则会删除并丢弃最旧的条目。如果最大值设置为 0,则不存储任何历史条目。

默认情况下,会话之间不保存历史记录,因此当您退出 MySQL Shell 时,您在当前会话期间发出的历史记录将丢失。您可以通过启用 MySQL Shell history.autoSave选项来保存会话之间的历史记录。例如,要使此更改成为永久问题:

mysqlsh-js> \option --persist history.autoSave=1

启用该history.autoSave选项后,历史记录将存储在 MySQL Shell 配置路径中,即~/.mysqlshLinux 和 macOS 上的目录,或%AppData%\MySQL\mysqlshWindows 上的文件夹。通过定义环境变量,可以在所有平台上覆盖此路径 MYSQLSH_USER_CONFIG_HOME。保存的历史记录由 MySQL Shell 自动创建,只有所有者用户才能读取。如果无法读取或写入历史文件,MySQL Shell 会记录一条错误消息并跳过读取或写入操作。在版本 8.0.16 之前,历史条目被保存到一个单一的history文件,其中包含以所有 MySQL Shell 语言发布的代码。在 MySQL Shell 8.0.16 及更高版本中,历史按活动语言拆分,文件名为history.sql, history.jshistory.py.

发出 MySQL Shell\history命令会按发出顺序显示历史条目,以及它们的历史条目编号,可以与该 命令一起使用。您可以手动删除单个历史条目、指定数字范围的历史条目或历史尾部。您也可以使用手动删除整个历史记录。当您退出 MySQL Shell 时,如果 配置选项已设置为,则保存历史文件中保留的历史条目,并将其编号重置为从 1 开始。如果 配置选项设置为,这是默认设置,历史文件被清除。 \history delete entry_number\history clearhistory.autoSavetrueshell.options["history.autoSave"]false

只有您在 MySQL Shell 提示符下交互式键入的代码才会添加到历史记录中。间接或内部执行的代码(例如\source 执行命令时)不会添加到历史记录中。当您发出多行代码时,历史条目中的新行字符将被删除。如果多次发布相同的代码,它只会在历史记录中存储一次,从而减少重复。

--histignore您可以使用命令选项 自定义添加到历史记录的条目。此外,在 SQL 模式下使用 MySQL Shell 时,您可以配置不应添加到历史记录中的字符串。\sql当您使用带有查询 的命令在另一种语言处于活动状态时执行单个 SQL 语句时,也会应用此历史记录忽略列表。

默认情况下,匹配 glob 模式 IDENTIFIED或未PASSWORD添加到历史记录的字符串。要配置更多字符串以匹配,请使用--histignore命令选项或 shell.options["history.sql.ignorePattern"]. 可以指定多个字符串,以冒号 (:) 分隔。历史匹配使用不区分大小写的 glob 模式,如匹配。支持的通配符是 *(匹配任何 0 个或多个字符)和?(恰好匹配 1 个字符)。默认字符串指定为 "*IDENTIFIED*:*PASSWORD*".

通过按向上箭头,即使历史忽略列表适用于它,也始终可以使用最近执行的语句。这样您就可以在不重新输入所有输入的情况下进行更正。如果过滤适用于最后执行的语句,则一旦输入另一个语句,或者如果您在执行该语句后立即退出 MySQL Shell,它就会从历史记录中删除。