Làm cách nào để xóa một truy vấn MySQL chưa thực thi khỏi dòng lệnh?


88

Giả sử bạn đang nhập một truy vấn dòng lệnh vào cơ sở dữ liệu MySQL và bạn cần hủy bỏ và bắt đầu lại. Từ một bash shell, bạn chỉ cần gõ ctrl-c và nhận được lời nhắc mới. Trong MySQL, ctrl-c sẽ thoát khỏi ứng dụng khách và đưa bạn trở lại trình bao.

Ví dụ: tôi có một câu lệnh SELECT dài, phức tạp được nhập vào nhưng tôi chưa nhấn trả về. Tôi nhận ra rằng tôi không muốn gửi lệnh nhưng tôi muốn có lệnh trên màn hình để tôi có thể sử dụng nó làm tài liệu tham khảo. Tôi muốn cứu trợ mà không cần thoát khỏi MySQL. Có ý kiến ​​gì không?

Điểm mấu chốt: lệnh vẫn chưa được thực hiện .


10
Chỉ như một tài liệu tham khảo, trong mysql 5.7, điều này đã được giải quyết. Bây giờ bạn có thể thực hiện ctrl-c để thực hiện chính xác điều này.
dkniffin

LAMP stack đã quá cũ và được sử dụng rộng rãi. Tôi làm tôi bối rối rằng phải mất nhiều thời gian để họ sửa chữa những thứ mà mọi người sẽ phải làm hết ngày này qua ngày khác.
ahnbizcad

@dkniffin: Tôi biết đây là một câu hỏi cũ, nhưng nó vẫn được xếp hạng đầu tiên trên một tìm kiếm. Bạn có thể thêm nhận xét của mình làm câu trả lời (nó đã là câu trả lời) để giúp lưu lượng truy cập tiếp tục không?
hat

@hat alright, tôi đã thêm nó như là một câu trả lời
dkniffin

Câu trả lời:


114

\c.

Khi khởi động MySQL, bạn có thể sẽ thấy thông báo này:

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

"Bộ đệm" mà nó đề cập đến là bộ đệm lệnh / truy vấn.


7
Chỉ một điểm nhỏ: bạn phải làm điều này trước bất kỳ dấu chấm phẩy nào.
wulftone

Điều tốt đẹp là, nó không thực sự rõ ràng ; bất cứ thứ gì được nhập vẫn hiển thị. (Tôi thành thật sẽ không mạo hiểm đoán rằng từ tin nhắn, đó là lý do tôi chưa bao giờ thử.)
Michael Scheper

43

Đầu tiên gõ Ctrl+ a, sau đó Ctrl+ k.


4
Nhưng OP đã chỉ định, "Tôi muốn có lệnh trên màn hình để tôi có thể sử dụng nó làm tham chiếu."
ruakh

Hoạt động như phiên bản 5.5.40-0.
đến

1
Không hoạt động với 5.6.28 @Ubuntu. Bên cạnh đó, đây là một chuỗi để giết cửa sổ màn hình hiện tại.
Piohen

1
Chà, bạn luôn có thể đặt chuỗi này làm lối tắt cho cái này và cái kia. Đó là trình tự mặc định trong emacs và bash.
đến ngày

1
Tất nhiên, không hoạt động đối với trường hợp sử dụng phổ biến nhất của tôi: Tôi quên dấu chấm phẩy, nhấn enter và thay vì làm lộn xộn lịch sử của mình với một dấu hai dòng không cần thiết, tôi muốn viết lại lệnh một cách chính xác.
quazgar

18

Sử dụng một trong các phím tắt sau để xóa dòng hiện tại:

  • Nhập Ctrl+ uđể xóa mọi thứ khỏi con trỏ trở lại đầu dòng
  • Ctrl+ kđể xóa mọi thứ từ con trỏ đến cuối dòng

Nếu không, như đã chỉ ra, hãy nhập \cvào cuối dòng hiện tại (một phím tắt cho clearlệnh) và sau đó nhấn Enter.


0

Nếu đó là một lệnh dài, tôi thường đặt mũi tên vào đầu lệnh và thêm chữ vô nghĩa, vì vậy nó sẽ không thực thi, nhưng tôi có thể mũi tên lên và có quyền truy cập mà không cần phải nhập lại. Ngược lại, nếu bạn không muốn thực thi nó, chỉ cần nhấn vào mũi tên lên và nó sẽ cuộn bạn qua lịch sử lệnh của bạn. Tìm một lệnh ngắn, backspace, sau đó nhập bất cứ thứ gì bạn muốn.


0

Phụ thuộc vào các ràng buộc chính của shell của bạn. Bạn có thể nhấn phím home hoặc chuỗi phím nào bạn sử dụng để quay lại bắt đầu, đặt trước truy vấn của bạn bằng X hoặc những gì đã từng làm cho nó không hợp lệ về mặt cú pháp, nhấn enter và bạn đã ổn


0

Nếu bạn đến đây với hy vọng tìm thấy câu trả lời tương tự trong Transact-SQL, hãy nhập RESET


0

Trong mysql 5.7, điều này đã được giải quyết. Bây giờ bạn có thể làm gì ctrl-cđể thoát khỏi dòng lệnh SQL.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.