我在Screen / Tmux中使用Mysql的命令行客户端,来自OSX的Terminal.app中的Bash。 当使用向上箭头重新显示以前运行的跨越多行的查询时,当光标位于终端的最后一行时,mysql命令历史记录中的命令被“截断”或截断。当我在Ubuntu工作站上使用相同的工具
时,这种情况永远不会发生以下是对所发生情况的直观表示:
输入一些查询;没错。
+-------------------------------------------+
|mysql> |
|mysql> |
|mysql> |
|mysql>select * from tables where legs = 4 a|
|nd colour = 'green'; |
+-------------------------------------------+
运行它,显示结果:
+-------------------------------------------+
|| 2 | ....... | ..... | |
|+---+---------+-------+ |
| x rows in set (0.00 sec) |
| |
|mysql> |
+-------------------------------------------+
点击[向上箭头]重新显示最后一个查询会让我:
+-------------------------------------------+
|| 2 | ....... | ..... | |
|+---+---------+-------+ |
| x rows in set (0.00 sec) |
| |
|nd colour = 'green'; |
+-------------------------------------------+
再次点击[向上箭头],我得到:
+-------------------------------------------+
|| 2 | ....... | ..... | |
|+---+---------+-------+ |
| x rows in set (0.00 sec) |
|mysql>select * from tables where legs = 4 a|
|nd colour = 'green'; |
+-------------------------------------------+
可以通过更改设置来解决吗?或者它是Mysql客户端的错误?
软件版本:
OSX 10.7.3
Terminal Version 2.2.2 (303)
GNU bash, version 3.2.48(1)-release (x86_64-apple-darwin11)
mysql Ver 14.14 Distrib 5.5.19, for osx10.7 (i386) using readline 5.1
Screen version 4.00.03 (FAU) 23-Oct-06
tmux 1.6
答案 0 :(得分:10)
在这方面,您可以考虑一些让我们的生活更轻松的选择:
readline命令与mysql选项结合: readline接受类似于basic emacs commands的命令(也可以设置为vi),或者示例CTRL-a返回到行的开头。
这与您在set horizontal-scroll-mode On
中设置的~/.inputrc
,readline相结合,可以让您输入一条直线,将光标放在最后。将它与CTRL-a结合起来,立即跳到开头,非常方便。
~/.inputrc
:
$if Mysql
set horizontal-scroll-mode On`
# uncomment the commands below to use vi keybindings
#set keymap vi
#set editing-mode vi
$endif
(某些系统,OSX 10.5,我相信使用libedit而不是readline,在这种情况下你需要把它全部放在~/.editrc
,如果你不确定你的系统问题是{{1} }命令)
要查找您发出的命令,您还可以使用mysql --version
,这样您就可以输入一个字词,并搜索您的历史记录以查找最后一次出现。
有趣的命令是:
根据您的shell和底层,它们可能不会全部工作或被拦截。例如我在kde上使用的Konsole,我不得不在高级设置中禁用流量控制以允许CTRL-s等。
最后,mysql还为你提供\e command,它允许你在常规文件编辑器中编辑你的命令,如果vi或emacs不是你的东西,尝试nano,它很容易并且运行良好。使用它的主要缺点是,当向上滚动换行符时,忽略选项卡和空格。这是一个unix唯一的东西,但OS X应该在那里做得很好,不能检查,因为我没有任何Apple电脑,对不起。 :)
为了更轻松地使用此命令,您可以在CTRL-r
中放置一个readline字符串宏
例如~/.inputrc
会将CONTROL-o绑定到\ e;然后输入以立即执行。 (查看Keybindings Section)
使用备用shell :
例如altSQL:它提供了语法着色,漂亮的历史滚动和其他一些细节,大的好处是你有源,所以你可以适应你想要的。
删除shell并转到GUI : 最后,我想插入好的MySQL workbench来处理您的数据库,它是跨平台的,免费的,并且在我看来是一个很好的工具。
我意识到这不是一个完美的解决方案,每个都有优点和缺点,但我希望这对你有所帮助。