您在 MySQL Shell 中发出的代码存储在历史记录中,可以使用上箭头和下箭头键访问历史记录。您还可以使用增量历史搜索功能搜索历史记录。要搜索历史记录,请使用 Ctrl+R 向后搜索,或使用 Ctrl+S 向前搜索历史记录。搜索激活后,输入字符会搜索历史记录中与之匹配的任何字符串,并显示第一个匹配项。使用 Ctrl+S 或 Ctrl+R 查找当前搜索词的更多匹配项。输入更多字符可以进一步细化搜索。在搜索期间,您可以按箭头键从当前搜索结果继续逐步浏览历史记录。按 Enter 键接受显示的匹配项。使用 Ctrl+C 取消搜索。
history.maxSize
MySQL Shell 配置选项设置历史记录中存储的最大条目数。默认值为 1000。如果历史记录条目数超过配置的最大值,则最旧的条目将被删除并丢弃。如果最大值设置为 0,则不存储任何历史记录条目。
默认情况下,历史记录不会在会话之间保存,因此,当您退出 MySQL Shell 时,您在当前会话期间发出的历史记录会丢失。您可以通过启用 MySQL Shell history.autoSave
选项在会话之间保存您的历史记录。例如,要永久更改此设置,请发出以下命令
mysqlsh-js> \option --persist history.autoSave=1
启用 history.autoSave
选项后,历史记录将存储在 MySQL Shell 配置路径中,该路径为 Linux 和 macOS 上的 ~/.mysqlsh
目录,或 Windows 上的 %AppData%\MySQL\mysqlsh
文件夹。此路径可以在所有平台上通过定义环境变量 MYSQLSH_USER_CONFIG_HOME
来覆盖。保存的历史记录由 MySQL Shell 自动创建,并且仅可由所有者用户读取。如果无法读取或写入历史记录文件,MySQL Shell 将记录错误消息并跳过读取或写入操作。历史记录按活动语言进行拆分,文件分别命名为 history.sql
、history.js
和 history.py
。
发出 MySQL Shell \history
命令会按发出顺序显示历史记录条目,以及它们的 history 条目编号,可以使用 \history delete
命令。您可以手动删除单个历史记录条目、指定数字范围内的 history 条目,或删除 history 的尾部。您还可以使用 entry_number
\history clear
手动删除整个 history。当您退出 MySQL Shell 时,如果 history.autoSave
配置选项已设置为 true
,则 history 文件中剩余的 history 条目将被保存,并且它们的编号将重置为从 1 开始。如果 shell.options["history.autoSave"]
配置选项设置为 false
(这是默认设置),则 history 文件将被清除。
仅您在 MySQL Shell 提示符下交互式输入的代码才会添加到历史记录中。间接或内部执行的代码(例如,执行 \source
命令时)不会添加到历史记录中。当您发出多行代码时,新行字符将在 history 条目中被剥离。如果同一代码被多次发出,它只会被存储在 history 中一次,从而减少重复。
您可以使用 --histignore
命令选项自定义添加到 history 的条目。此外,在 SQL 模式下使用 MySQL Shell 时,您可以配置不应添加到历史记录中的字符串。此 history 忽略列表在使用 \sql
命令执行单个 SQL 语句时(而其他语言处于活动状态)也会应用。
默认情况下,与 glob 模式 IDENTIFIED
或 PASSWORD
匹配的字符串不会添加到历史记录中。要配置要匹配的其他字符串,请使用 --histignore
命令选项或 shell.options["history.sql.ignorePattern"]
。可以指定多个字符串,用冒号 (:) 分隔。history 匹配使用不区分大小写的 glob 模式匹配。支持的通配符为 *(匹配任何 0 个或多个字符)和 ?(匹配正好 1 个字符)。默认字符串指定为 "*IDENTIFIED*:*PASSWORD*"
。
最近执行的语句始终可以通过按上箭头键来获取,即使 history 忽略列表对其适用也是如此。这样您就可以进行更正,而无需重新输入所有输入。如果过滤适用于最后执行的语句,则该语句会在输入另一条语句后立即从历史记录中删除,或者如果您在执行该语句后立即退出 MySQL Shell,也会删除该语句。