通常,自动完成在mysql命令行客户机(mysql-client-5.5)中工作得很好。我有一张名叫booking的桌子。当我键入字母b和pres TAB时,表的名称将自动完成:
SELECT * FROM b<TAB>但是,当我使用rlwrap (alias mysql='/usr/bin/rlwrap -s 99999 -a -pRED /usr/bin/mysql')时,自动完成将停止工作。
看起来,rlwrap似乎在干扰自动完成功能。
我在用Debian Wheezy。
当我用strace开始我的命令时,即:
strace /usr/bin/rlwrap -s 99999 -a -pRED /usr/bin/mysql --auto-rehash我看到下面的错误
access("/usr/share/rlwrap/completions/mysql", R_OK) = -1 ENOENT (No such file or directory)可能是,rlwrap需要一些mysql完成的文件吗?
好的,我已经创建了文件/usr/share/rlwrap/completions/mysql,并在其中放置了3行示例:
select
from
where现在,当我启动mysql并键入sele<TAB>时,选项卡实际上完成了单词select。这是进步,但这并不能解决整个问题。我主要需要自动完成,以帮助我完成模糊的表名,我不(想)记住。但是,每次更改/添加/重命名表时,我都不能编辑自动完成文件。
难道不能告诉rlwrap使用与mysql相同的自动完成文件吗?(我认为mysql必须使用这样的文件)
以下是来自strace的其他错误
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)发布于 2013-10-29 00:00:01
编辑my.cnf:
[mysql]
auto-rehash如果这不起作用,则将其添加到debian.cnf中。
即使你也能做到:
mysql> \#发布于 2014-01-08 04:38:46
这将在普通mysql服务器上启用完成:
mysql --auto-rehash对于rlwrap,请检查是否设置了RLWRAP_HOME。有关更多信息,请参见这里。如果您的系统太忙,该页面还会报告可能的竞争条件。
https://unix.stackexchange.com/questions/97453
复制相似问题