Làm thế nào để thoát dấu nhắc lệnh MySQL?


37

Tôi đã cài đặt MySQL. Bây giờ tôi bị mắc kẹt trong dấu nhắc lệnh của MySQL. Tôi đã chạy MySQL như thế này:

C:\>mysql.exe
mysql>

Sau đó, tôi gõ một số lệnh không hợp lệ như thế này:

mysql> /version
    ->

Và bất kể tôi gõ gì, tôi không thể thoát khỏi dòng lệnh / thiết bị đầu cuối của MySQL. Ví dụ:

  • exit

  • CtrlC

  • CtrlD

  • quit

  • Ctrl\

  • CtrlZ

  • bye

Làm cách nào để thoát thiết bị đầu cuối MySQL sang thiết bị đầu cuối mặc định?


1
Bạn đã thử tắt máy tính của bạn? / s
VarunAgw

Câu trả lời:


29

Để thêm vào câu trả lời khác, bạn chỉ cần kết thúc truy vấn không hợp lệ hiện tại bằng dấu chấm phẩy:

mysql> /version
    -> ;
ERROR 1064 (42000): You have an error in your SQL syntax.........
mysql> exit
Bye

c:\mysql\bin>

Hoặc sử dụng \G(được cho là làm cho các hàng hiển thị theo chiều dọc):

mysql> /version
    -> ;
ERROR 1064 (42000): You have an error in your SQL syntax.........
mysql> exit
Bye

c:\mysql\bin>

Tất nhiên, cả hai tùy chọn đều cho rằng bạn không có trích dẫn mở đầu. Nếu bạn làm thế, trước tiên bạn phải đóng nó lại bằng một trích dẫn kết thúc.


Điều khiến tôi bực mình là tôi không hiểu đầy đủ cách thiết bị đầu cuối mysql xử lý đầu vào trong các chế độ trích dẫn khác nhau như được định nghĩa ở đây: dev.mysql.com/doc/refman/5.0/en/entering-queries.html Có 5 chế độ : ->, '>, ">, `>, và /*> tôi thử nghiệm nó một lần nữa trên các phiên bản mới nhất, và nó làm việc một cách chính xác. Vì vậy, nó trông giống như một lỗi cố định.
Eric Leschinski

Dấu chấm phẩy không hoạt động ... không có gì. Nếu tôi làm \ G, nó hoạt động như thể nó thoát khỏi chế độ ngu ngốc đó ->, nhưng sau đó quay lại vào nó sau một lệnh khác. Tại sao mysql rất ngu ngốc về điều này?
Amalgovinus

Câu trả lời thực sự là, mysql cli của Windows bị vặn và có thể bị kẹt. Cách dễ nhất trên windows là chỉ cần sử dụng git bash
Amalgovinus

20

Tại sao ctrl-c không thoát khỏi chế độ đầu vào mysql trong Windows?

Bởi vì bạn đã bảo MySQL diễn giải các lệnh thoát của bạn là đầu vào hợp lệ.

Điều làm cho thiết bị đầu cuối MySQL khó hiểu là có các chế độ khác nhau cho trích dẫn đơn, trích dẫn kép và chế độ bình thường.

Vì vậy, để thoát khỏi chế độ đầu vào mysql, bạn sẽ phải thực hiện các bước sau:

  1. Thoát khỏi chế độ báo giá kép.
  2. Thoát khỏi chế độ báo giá duy nhất.
  3. Thoát khỏi chế độ mysql.
  4. Thoát mysql trở lại thiết bị đầu cuối mặc định.

Ví dụ cơ bản nhất:

mysql> /version
    ->
    ->
    ->
    -> \c
mysql> exit
Bye

C:\>

Bạn không bao giờ để chế độ mặc định trong ví dụ trên để các lệnh thoát hoạt động chính xác.

Ví dụ 2 (đây là những gì đang làm bạn vấp ngã).

mysql> hello
    ->
    -> look dash is on the left"
    "> In doublequote mode now, because doublequote above
    "> adding another doublequote breaks you out: "
    -> look a single quote ' here
    '> in single quote mode now.
    '> get out, in, then out again with three singlequotes: '''
    -> now it will listen to your escape code: \c
mysql> exit
Bye

C:\>

Trong khi bạn đang ở chế độ trích dẫn đơn hoặc chế độ trích dẫn kép, không có trình tự thoát nào được tôn trọng. Thậm chí Ctrl-CCtrl-D được bỏ qua trong các chế độ này.

Trong đó một trong 26 vũ trụ, Ctrl-C không dừng chương trình bất kể chế độ nào? Chúng tôi có thể không bao giờ biết. Bazeda.


1
Tôi đoán trích dẫn thoát khỏi mọi thứ, và nó đang chờ thêm đầu vào. Điều đó thực sự có ý nghĩa khi bạn có thể lưu trữ thứ gì đó như "thoát" bên trong cơ sở dữ liệu
Journeyman Geek

@Eric, Mặc dù Ctrl-D không hoạt động khi bạn ở chế độ trích dẫn, Ctrl-C vẫn hoạt động nếu bạn đang sử dụng các máy khách cũ hơn như mysql 5.5.43 và mysql 5.1.73. Đã thử nghiệm trên win 8.1.
Pacerier

Ctrl-c vẫn không để lại cho tôi. Tôi không bao giờ nhận được tin nhắn "tạm biệt". Hơn nữa, khi tôi dính vào -> chế độ, điều duy nhất tôi có thể làm là Ctrl + C để thoát ra? Hoàn toàn không có gì khác nhận được phản hồi từ người phiên dịch. Mysql là trực quan trong hầu hết các trường hợp, nhưng đây không phải là một trường hợp như vậy.
Amalgovinus

Có thể trình giả lập thiết bị đầu cuối của bạn đang ngấu nghiến mã Ctrl của bạn và gửi một mã khóa khác đến quy trình mà nó diễn giải thành văn bản. Tôi cảm thấy nỗi đau của bạn, Trở lại khi tôi viết bài đăng này vào năm 2013, đó là vấn đề này và một triệu người khác giống như máy Windows cũ của tôi đã bị ném và tặc vào thùng rác vì làm nhiễm bẩn PC của tôi, nó đang nằm ở một bãi rác ở đâu đó . Cách duy nhất tôi tìm thấy để khắc phục điều này là loại bỏ hệ điều hành Windows và di chuyển sang hệ tư tưởng Mac và Linux không phạm phải những tội phạm chèn người trung gian để ngăn Ctrl-C của bạn hoạt động.
Eric Leschinski

1

SQL hỗ trợ các truy vấn được nhập dưới dạng nhiều dòng. Chỉ khi bạn nhập dấu chấm phẩy ;, truy vấn sẽ được thực thi. Bạn cũng cần phải chấm dứt bất kỳ chuỗi nào trong truy vấn của bạn.

Cảnh giác với việc sao chép và dán các truy vấn bằng các chuỗi từ gói xử lý văn bản - các trích dẫn có thể đã được thay thế bằng 'các trích dẫn thông minh' và điều này sẽ làm rối loạn truy vấn của bạn.

Nếu bạn đã nhập một truy vấn không hoàn thành, nó sẽ không chạy và đó là lý do tại sao gõ thoát không hoạt động - MySQL nghĩ rằng bạn vẫn đang ở giữa một truy vấn. Dấu nhắc lệnh thay đổi để hiển thị những gì đầu vào là cần thiết để chấm dứt truy vấn. Ví dụ, một trích dẫn hoặc trích dẫn kép có thể được yêu cầu. Điều này là mạnh mẽ và dấu nhắc lệnh là hữu ích nhưng tôi thấy nó khó hiểu cho đến khi tôi đọc câu trả lời và nhận xét về chủ đề này.

đọc thông số kỹ thuật ở đây

Lời nhắc 'cấp cao nhất' là:

mys>

Nếu bạn thấy điều này, thì bạn có thể nhập một lệnh, kết thúc nó bằng; và nhấn enter.

Nếu bạn thấy một dấu nhắc như thế này:

'>
">
->

Sau đó, MySQL đang chờ bạn kết thúc một chuỗi bằng một trích dẫn hoặc truy vấn bằng dấu chấm phẩy.

Dưới đây là cách yêu cầu MySQL hủy bỏ truy vấn bị lỗi của bạn và đưa bạn trở lại dấu nhắc chính:

\c

Tôi nghĩ rằng điều này an toàn hơn là chấm dứt và chạy truy vấn ngoài ý muốn của bạn. Sau này, bạn nên quay lại dấu nhắc> và có thể thoát bằng:

exit


0

Bạn có thể cố gắng trốn thoát bằng cách sử dụng Ctrl+ Shift+D


3
Đây là một tạo phẩm của trình giả lập thiết bị đầu cuối cụ thể mà bạn đang sử dụng, vì vậy sẽ rất hữu ích khi biết cái nào là của bạn. Bạn rõ ràng đã ánh xạ lại Ctrl-Shift-D vào một mã khóa mà mysql xử lý để hiểu nghĩa là thoát. Nếu đây là trường hợp, bạn sẽ có thể ánh xạ lại mã khóa trong trình giả lập thiết bị đầu cuối của bạn để bạn không phải lấy đường hầm ống cổ tay để thoát khỏi chương trình.
Eric Leschinski
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.