首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >rlwrap: mysql自动完成不工作

rlwrap: mysql自动完成不工作
EN

Unix & Linux用户
提问于 2013-10-24 17:40:21
回答 2查看 2.6K关注 0票数 3

通常,自动完成在mysql命令行客户机(mysql-client-5.5)中工作得很好。我有一张名叫booking的桌子。当我键入字母b和pres TAB时,表的名称将自动完成:

代码语言:javascript
复制
SELECT * FROM b<TAB>

但是,当我使用rlwrap (alias mysql='/usr/bin/rlwrap -s 99999 -a -pRED /usr/bin/mysql')时,自动完成将停止工作。

看起来,rlwrap似乎在干扰自动完成功能。

我在用Debian Wheezy。

更新1

当我用strace开始我的命令时,即:

代码语言:javascript
复制
strace /usr/bin/rlwrap -s 99999 -a -pRED /usr/bin/mysql --auto-rehash

我看到下面的错误

代码语言:javascript
复制
access("/usr/share/rlwrap/completions/mysql", R_OK) = -1 ENOENT (No such file or directory)

可能是,rlwrap需要一些mysql完成的文件吗?

更新2

好的,我已经创建了文件/usr/share/rlwrap/completions/mysql,并在其中放置了3行示例:

代码语言:javascript
复制
select
from
where

现在,当我启动mysql并键入sele<TAB>时,选项卡实际上完成了单词select。这是进步,但这并不能解决整个问题。我主要需要自动完成,以帮助我完成模糊的表名,我不(想)记住。但是,每次更改/添加/重命名表时,我都不能编辑自动完成文件。

难道不能告诉rlwrap使用与mysql相同的自动完成文件吗?(我认为mysql必须使用这样的文件)

更新3

以下是来自strace的其他错误

代码语言:javascript
复制
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such file or directory)
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
stat("/home/martin/.terminfo", 0x7fff27ee6a70) = -1 ENOENT (No such file or directory)
access("/etc/terminfo/x/xterm-256color", R_OK) = -1 ENOENT (No such file or directory)
access("/home/martin/.mysql_completions", R_OK) = -1 ENOENT (No such file or directory)
access("/usr/share/rlwrap/completions/mysql", R_OK) = -1 ENOENT (No such file or directory)
connect(4, {sa_family=AF_FILE, path="/var/run/nscd/socket"}, 110) = -1 ENOENT (No such file or directory)
connect(4, {sa_family=AF_FILE, path="/var/run/nscd/socket"}, 110) = -1 ENOENT (No such file or directory)
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
stat("/home/martin/.inputrc", 0x7fff27ee7710) = -1 ENOENT (No such file or directory)
EN

回答 2

Unix & Linux用户

发布于 2013-10-29 00:00:01

编辑my.cnf

代码语言:javascript
复制
[mysql]
auto-rehash

如果这不起作用,则将其添加到debian.cnf中。

即使你也能做到:

代码语言:javascript
复制
mysql> \#
票数 2
EN

Unix & Linux用户

发布于 2014-01-08 04:38:46

这将在普通mysql服务器上启用完成:

代码语言:javascript
复制
mysql --auto-rehash

对于rlwrap,请检查是否设置了RLWRAP_HOME。有关更多信息,请参见这里。如果您的系统太忙,该页面还会报告可能的竞争条件。

票数 2
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/97453

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档