在使用mysql命令行客户端进行数据库操作时,输入错误是非常常见的情况,很多新手遇到错误第一反应就是退出客户端重新登录,实际上mysql提供了多种不需要退出就能修正错误的方式,掌握这些方法可以大幅提升操作效率。

当前输入行直接修改错误
如果还没有按下回车执行语句,只是在输入过程中发现内容有误,可以直接使用键盘的左右方向键移动光标到错误位置,删除错误内容后重新输入正确内容即可。这种方式适用于语句还未提交执行的场景,操作逻辑和普通的命令行文本编辑一致。
比如输入查询语句时少打了表名的一个字符:
-- 输入到一半发现表名写错 SELECT * FROM user_inf; -- 不需要退出,按左方向键移动到f位置,删除f,输入o,修正为user_info即可
已执行错误语句的修正方式
如果已经按下回车执行了语句,且返回了错误提示,不需要退出客户端,可以直接重新输入正确的语句再次执行。mysql会保留当前的连接状态,所有的会话配置、选中的数据库等信息都不会丢失,重新输入正确语句即可。
例如之前没有选中数据库就执行查询,返回了错误:
mysql> SELECT * FROM user_info; ERROR 1046 (3D000): No database selected -- 不需要退出,直接输入USE test;选中数据库后,再重新执行查询语句即可 mysql> USE test; Database changed mysql> SELECT * FROM user_info;
使用快捷键快速处理输入错误
mysql命令行客户端支持部分常用的快捷键,可以帮助快速修正输入错误:
- Ctrl+A:快速将光标移动到当前输入行的开头,方便从头检查输入内容
- Ctrl+E:快速将光标移动到当前输入行的末尾,适合在语句末尾补充遗漏的内容
- Ctrl+W:删除光标前的一个单词,适合快速删除输入错误的整个单词
- Ctrl+U:删除当前输入行的所有内容,适合输入错误较多时快速清空重新输入
多行输入时的错误处理
当输入多行语句时,比如创建存储过程、触发器等复杂语句,中途发现错误不需要退出,有两种处理方式:
方式一:直接输入结束符后重新输入
如果已经进入了多行输入模式(提示符变为->或者>>),可以直接输入语句结束符;或者g执行当前错误语句,返回错误提示后重新输入正确的完整语句即可。
mysql> CREATE TABLE test_table (
-> id INT PRIMARY KEY,
-> name VARCHAR(20)
-> -- 发现少写了age字段,不需要退出,直接输入;执行错误语句
-> ;
ERROR 1064 (42000): You have an error in your SQL syntax
-- 重新输入正确的建表语句即可
mysql> CREATE TABLE test_table (
-> id INT PRIMARY KEY,
-> name VARCHAR(20),
-> age INT
-> );
方式二:使用c取消当前输入
如果不想执行错误的多行语句,可以输入c取消当前输入,回到正常的命令提示符,再重新输入正确的语句。这种方式不会执行错误的语句,也不会产生错误日志。
mysql> CREATE TABLE test_table (
-> id INT PRIMARY KEY,
-> name VARCHAR(20)
-> -- 发现错误,输入c取消当前输入
-> c
mysql> -- 回到正常提示符,重新输入正确语句即可
注意事项
如果输入错误导致mysql客户端卡死或者出现异常的提示符,可以尝试输入exit或者q退出,但这种情况非常少见,大部分输入错误都可以通过上述方式在不退出的情况下处理。另外,修改输入内容时要注意mysql的语法规则,比如字符串需要用单引号包裹,表名和字段名如果有特殊字符需要用反引号包裹,避免修正输入错误后又出现新的语法错误。