mysql - MySQL shell 中不区分大小写的完成

标签 mysql autocomplete

MySQL 可以通过制表符完成 shell 命令和 SQL 声明。

但对于 SQL,它只完成大写输入。例如,'SEL' 将适用于 'SELECT',但 'sel' 不会。

是否有类似 MySQL 的 .inputrc 之类的东西,我可以将其配置为不区分大小写的完成?

最佳答案

我来到 StackOverflow 寻找这个问题的答案,但既然没有,我想我自己研究一下答案。

MySQL 命令行客户端与 GNU Readline 库链接以提供选项卡补全,并且由于 MySQL 客户端解析 .inputrc(从使用 strace 可以看出来检查 MySQL 客户端进行的系统调用),我认为它会注意诸如 set completion-ignore-case On 之类的选项。不幸的是,事实并非如此。

使用来源,卢克

虽然我不是 C++ 开发人员,但我检查了 source code for the command line client .

可以看到build_completion_hash()函数添加了诸如 SQL 关键字、表名和字段名到哈希(快速高效的形式 数据结构),用于提供补全。但是,part which adds SQL commands to the hash只需添加以下 list of SQL commands .

大部分 SQL 命令都以大写形式列出,但也有少数异常(exception),例如 create databasecreate tableshow databases, show fields from 使用小写字母列出。由于这个生成的列表中的 SQL 关键字都是大写的,所以当 SQL 关键字是小写时,补全不起作用。

这个列表曾经包含一个简短的 SQL 命令列表(小写),例如 selectdropinsert。然而,在 January 2008 ,这个简短的列表被 MySQL 支持的 SQL 命令的生成列表所取代。

注意:我链接到 MySQL 的 MariaDB 分支的源代码,因为它更易于网络访问。 MariaDB 是来自 MySQL 代码库的二进制兼容分支,现在由 Oracle 拥有(该项目由 MySQL AB 背后的同一个人运行)。从检查版本控制历史来看,我提到的客户端代码部分在过去几年中没有太大变化。

TLDR:答案似乎是否定的。

关于mysql - MySQL shell 中不区分大小写的完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11894911/

相关文章:

mysql - IntelliJ IDEA : Unable to download MySqlDriver

visual-studio-code - 如何更快地显示 Visual Studio Code 自动完成建议?

html - HTML5 中的自动完成功能关闭

emacs - 仅当我编辑 .c 或 .cpp 时,如何加载 .abbrev_defs 文件?

git - 如何在使用 'git checkout' 时将 zsh 配置为自动完成分支名称?

javascript - 在 json 文件上使用嵌套数组自动完成

mysql - 如何在两个子查询中使用分组依据并对行数求和?

mysql查询按字母顺序对同一列表中计数> 1和计数= 1的项目进行排序

php - 使用 codeigniter 在数据库中插入多个复选框值

MySQL:在带时间戳的行之间移动数据