วิธีการออกจากพรอมต์คำสั่ง MySQL


37

ฉันได้ติดตั้ง MySQL ตอนนี้ฉันติดอยู่ภายในพรอมต์คำสั่ง MySQL ฉันวิ่ง MySQL แบบนี้:

C:\>mysql.exe
mysql>

จากนั้นฉันพิมพ์คำสั่งที่ไม่ถูกต้องเช่นนี้:

mysql> /version
    ->

และไม่ว่าฉันจะพิมพ์อะไรฉันก็ไม่สามารถออกจาก MySQL command-line / terminal เช่น:

  • exit

  • CtrlC

  • CtrlD

  • quit

  • Ctrl\

  • CtrlZ

  • bye

ฉันจะออกจากเทอร์มินัล MySQL ไปยังเทอร์มินัลเริ่มต้นได้อย่างไร


1
คุณลองปิดเครื่องคอมพิวเตอร์หรือไม่ / s
VarunAgw

คำตอบ:


29

หากต้องการเพิ่มคำตอบอื่น ๆ คุณสามารถสิ้นสุดการสืบค้นที่ไม่ถูกต้องในปัจจุบันโดยใช้เครื่องหมายอัฒภาค:

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

c:\mysql\bin>

หรือการใช้\G(ซึ่งควรจะทำให้แถวแสดงผลในแนวตั้ง):

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

c:\mysql\bin>

แน่นอนว่าตัวเลือกทั้งสองสมมติว่าคุณไม่มีใบเสนอราคาเปิด หากคุณทำคุณจะต้องปิดมันก่อนด้วยคำพูดสุดท้าย


สิ่งที่ทำให้ฉันสะดุดคือฉันไม่เข้าใจอย่างถ่องแท้ว่าเทอร์มินัล mysql จัดการอินพุตในโหมดราคาต่าง ๆ ตามที่กำหนดไว้ที่นี่: dev.mysql.com/doc/refman/5.0/en/entering-queries.html มี 5 โหมด : ->, '>, ">, `>และ/*> ผมทดสอบอีกครั้งในรุ่นล่าสุดและจะทำงานได้อย่างถูกต้อง ดังนั้นดูเหมือนว่าแก้ไขข้อผิดพลาด
Eric Leschinski

อัฒภาคไม่ทำงาน ... ไม่มีอะไรทำ ถ้าฉันทำ \ G มันจะทำหน้าที่เหมือนออกจากโหมดโง่ -> แต่หลังจากนั้นก็กลับไปที่คำสั่งอื่น ทำไม mysql ถึงโง่ขนาดนี้?
Amalgovinus

คำตอบที่แท้จริงคือ mysql cli ของ Windows ถูกทำให้เมาและอาจค้าง วิธีที่ง่ายที่สุดบน windows คือการใช้ git bash
Amalgovinus

20

ทำไม ctrl-c ไม่ออกจากโหมดป้อนข้อมูล mysql ใน Windows

เพราะคุณได้บอก MySQL ให้แปลคำสั่ง exit ของคุณเป็นอินพุตที่ถูกต้อง

สิ่งที่ทำให้เทอร์มินัล MySQL เข้าใจยากคือมีโหมดที่แตกต่างกันสำหรับการเสนอราคาเดี่ยวการเสนอราคาสองครั้งและโหมดปกติ

ดังนั้นออกจากโหมดป้อน mysql คุณจะต้องทำตามขั้นตอนเหล่านี้:

  1. ออกจากโหมดเสนอราคาสองครั้ง
  2. ออกจากโหมดเสนอราคาเดี่ยว
  3. ออกจากโหมด mysql
  4. ออกจาก mysql กลับไปที่เทอร์มินัลเริ่มต้น

ตัวอย่างพื้นฐานที่สุด:

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

C:\>

คุณไม่เคยออกจากโหมดเริ่มต้นในตัวอย่างข้างต้นเพื่อให้คำสั่ง exit ทำงานอย่างถูกต้อง

ตัวอย่างที่ 2 (นี่คือสิ่งที่ทำให้คุณสะดุด)

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:\>

ในขณะที่คุณอยู่ในโหมดอัญประกาศเดี่ยวหรือโหมดอัญประกาศคู่ไม่มีลำดับ escape ยกเว้น แม้Ctrl-CและCtrl-Dจะถูกละเลยในโหมดนี้

Ctrl-C หนึ่งใน 26 จักรวาลใดไม่หยุดโปรแกรมโดยไม่คำนึงถึงโหมด? เราอาจไม่เคยรู้ Bazinga


1
ฉันเดาว่าอัญประกาศหนีจากสิ่งต่าง ๆ และรอให้อินพุตเพิ่มขึ้น จริง ๆ แล้วเป็นเรื่องที่สมเหตุสมผลเมื่อคุณอาจเก็บบางสิ่งเช่น "ทางออก" ไว้ในฐานข้อมูล
Journeyman Geek

@Eric ในขณะที่ Ctrl-D ไม่ทำงานเมื่อคุณอยู่ในโหมดอ้างคำสั่ง Ctrl-C ยังคงทำงานถ้าคุณใช้ไคลเอนต์รุ่นเก่าเช่น mysql 5.5.43 และ mysql 5.1.73 ทดสอบกับการชนะ 8.1
Pacerier

Ctrl-c ยังไม่ปล่อยให้ฉัน ฉันไม่เคยได้รับข้อความ "ลาก่อน" นอกจากนี้เมื่อฉันอยู่ในโหมด -> สิ่งเดียวที่ฉันทำได้คือ Ctrl + C ที่จะออกไป? ไม่มีสิ่งใดที่จะได้รับการตอบกลับจากล่าม Mysql นั้นใช้งานง่ายในกรณีส่วนใหญ่ แต่นี่ไม่ใช่กรณีเช่นนี้
Amalgovinus

บางทีเทอร์มินัลอีมูเลเตอร์ของคุณกำลัง gobbling Ctrl-codes ของคุณและส่ง keycode ที่แตกต่างไปยังกระบวนการที่แปลเป็นข้อความ ฉันรู้สึกถึงความเจ็บปวดของคุณย้อนกลับไปเมื่อฉันเขียนบทความนี้ย้อนกลับไปในปี 2556 มันเป็นปัญหานี้และอีกหลายล้านคนชอบที่เครื่องวินโดวส์อดีตของฉันถูกอบและทิ้งไว้ในถังขยะเพื่อปนเปื้อนพีซีของฉัน . วิธีเดียวที่ฉันพบในการแก้ไขปัญหานี้คือการกำจัดระบบปฏิบัติการ Windows และย้ายไปยังอุดมการณ์ Mac และ Linux ซึ่งไม่ได้กระทำความผิดในการแทรกพ่อค้าคนกลางเพื่อป้องกัน Ctrl-C ของคุณทำงาน
Eric Leschinski

1

SQL รองรับการสืบค้นที่ป้อนเป็นหลายบรรทัด เฉพาะเมื่อคุณป้อนเซมิโคลอน;เท่านั้นแบบสอบถามจะถูกเรียกใช้งาน คุณต้องยกเลิกสตริงใด ๆ ในการสืบค้นด้วย

ระวังการคัดลอกและวางคำสั่งด้วยสตริงจากแพ็คเกจประมวลผลคำ - คำพูดอาจถูกแทนที่ด้วย 'คำพูดอัจฉริยะ' และสิ่งนี้จะทำให้ข้อความค้นหาของคุณยุ่งเหยิง

หากคุณป้อนคำค้นหาที่ไม่ได้กรองจะไม่ทำงานและนั่นเป็นสาเหตุที่การพิมพ์ออกไม่ทำงาน - MySQL คิดว่าคุณยังอยู่ในช่วงค้นหา พรอมต์คำสั่งจะเปลี่ยนเพื่อแสดงว่าจำเป็นต้องป้อนข้อมูลใดเพื่อยกเลิกการสืบค้น ยกตัวอย่างเช่นอาจจะต้องใช้เครื่องหมายคำพูดหรือเครื่องหมายคำพูดคู่ นี่มีประสิทธิภาพและพรอมต์คำสั่งมีประโยชน์ แต่ฉันพบว่ามันสับสนจนกระทั่งฉันอ่านคำตอบและความคิดเห็นในกระทู้นี้

อ่านข้อกำหนดได้ที่นี่

พรอมต์ 'ระดับสูงสุด' คือ:

MySQL>

หากคุณเห็นสิ่งนี้คุณสามารถป้อนคำสั่งสิ้นสุดด้วย; และกด Enter

หากคุณเห็นพรอมต์เช่นนี้:

'>
">
->

จากนั้น MySQL กำลังรอให้คุณยกเลิกสตริงด้วยเครื่องหมายคำพูดหรือแบบสอบถามที่มีเครื่องหมายเซมิโคลอน

ต่อไปนี้เป็นวิธีบอก MySQL ให้ยกเลิกการสืบค้นที่ไม่ถูกลบล้างและทำให้คุณกลับไปที่หน้าจอหลัก:

\c

ฉันคิดว่าวิธีนี้ปลอดภัยกว่าการยกเลิกและเรียกใช้แบบสอบถามที่ไม่ได้ตั้งใจของคุณ หลังจากนี้คุณควรกลับไปที่พรอมต์> และสามารถออกโดย:

exit


0

คุณสามารถพยายามหลบหนีโดยใช้Ctrl+ Shift+D


3
นี่เป็นสิ่งประดิษฐ์ของเทอร์มินัลอีมูเลเตอร์เฉพาะที่คุณใช้ดังนั้นจะเป็นประโยชน์หากคุณทราบว่าอันไหนเป็นของคุณ เห็นได้ชัดว่าคุณได้ทำการแมปใหม่ Ctrl-Shift-D เป็นรหัสที่กระบวนการ mysql ตีความหมายถึงการออก หากเป็นกรณีนี้คุณควรจะทำการแมปรหัสในตัวจำลองเทอร์มินัลของคุณดังนั้นคุณไม่จำเป็นต้องได้รับ carpal tunnel เพื่อออกจากโปรแกรม
Eric Leschinski
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.