สัญลักษณ์ลูกศร (“ ->”) หมายถึงอะไรในบรรทัดคำสั่ง


6

ฉันทำงานกับ Terminal (Mac OS X) แต่ฉันคิดว่านี่เป็นส่วนหนึ่งของ Linux บางครั้งเมื่อฉันรันคำสั่งเทอร์มินัลจะส่งคืนบรรทัดใหม่ที่เยื้องและมีเพียง->บรรทัด ดูเหมือนว่ามันกำลังรออะไรบางอย่าง แต่ฉันไม่รู้ว่ามันต้องมีการดำเนินการในส่วนของฉันหรือไม่ การกด Enter จะส่งคืนบรรทัดอื่นที่เหมือนกัน เมื่อฉันCtrl + Cพูดว่ามันAbortedหมายถึงบางสิ่งที่กำลังประมวลผลอย่างชัดเจน สิ่งนี้หมายความว่า? ตัวอย่างเช่นต่อไปนี้:

$ mysql -u root -h host -p
Enter password:

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is X
Server version: 5.1.39-log MySQL Server

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

mysql> mysqldump my_database
    -> 
    -> [Ctrl + C]
    -> Aborted
$

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


10
ที่จริงแล้ว OS X คือ Unix GNU / Linux เป็นระบบปฏิบัติการที่คล้ายกันมาก แต่ไม่เกี่ยวข้องโดยตรง
AndrejaKo

และในกรณีนี้คุณอาจไม่ต้องการดำเนินการmysqlก่อน เพียงเรียกใช้mysqldump my_databaseด้วยตัวเองนอก MySQL พรอมต์
Arjan

1
เปลือกทุบตีจะทำคล้ายกับใบเสนอราคา unclosed
Rob

→หรือ👉ดูดีขึ้น
Jonny

คำตอบ:


11

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

คำสั่ง SQL แบบ "เต็ม" ทั่วไปถูกเขียนด้วยการเยื้องซึ่งได้รับการสนับสนุนที่บรรทัดคำสั่ง คุณจะพูดอะไรเช่น

SELECT
    `users`.*
FROM
    `users`
WHERE
    `users`.`is_active` = 1 AND
    `users`.`age` < 13
ORDER BY
    `users`.`username`

เยี่ยมมาก แต่ฉันจะออกจาก "->" ได้อย่างไร อัฒภาคไม่ทำงาน
Amalgovinus

1
@Amalgovinus ลอง\d ;ก่อน
Michał Miszczyszyn

7

ลูกศรเป็นพรอมต์ต่อเนื่องแบบโต้ตอบ หากคุณป้อนคำสั่งที่ยังไม่เสร็จ SQL เชลล์ (เรียกใช้โดยคำสั่ง mysql) กำลังรอส่วนที่เหลือของมัน

ในกรณีนี้เชลล์ SQL กำลังรอพา ธ ปลายทางสำหรับ mysqldump

นอกจากนี้คำสั่งยังไม่สมบูรณ์จนกว่าคุณจะยกเลิกคำสั่งด้วยเครื่องหมายอัฒภาค (ขอบคุณ @MrStatic)


1
ในกรณีนี้ไม่ใช่เชลล์ที่รอ - เป็น mysql อย่างไรก็ตามคุณไม่ถูกต้อง
Dennis Williamson

1
เพื่อเพิ่มวิธีที่คุณสามารถบอกคำสั่งเพิ่มเติม atleast ใน mysql ยังไม่เสร็จคุณไม่ได้ลงท้ายด้วย ';'
Unfundednut

@Dennis ขออภัยสำหรับถ้อยคำที่ไม่แน่ชัดของฉัน - ในทางเทคนิคมันเป็น "SQL shell" (ดูdev.mysql.com/doc/refman/5.1/th/mysql.html ) แต่ใช่ไม่ใช่ bash / zsh unix shell …ฉัน จะแก้ไขคำตอบของฉัน
ghoppe

1

แน่นอนคุณมีข้อผิดพลาดทางไวยากรณ์; คำสั่ง SQL ต้องลงท้ายด้วยเครื่องหมายอัฒภาค ตัวอย่างเช่น:

mysqldump my_database;

0

ถ้าคุณใช้MariaDB , mysqldumpไม่ได้เป็นคำสั่ง MySQL เรียกใช้ในการทุบตี

$ mysqldump -u root -h host -p ### my_database > dump.sql

mysqldump --helpเพื่อให้มีการใช้งานที่ถูกต้องมากขึ้นทำงาน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.