Mysql komut satırı programında Control-C düzeltmek?


10

Gelen mysqlkomut satırında, pres Control-Cprogramı iptal edecek ve bash geri getirmek. Gelen psqlpostgres'in biri, geçerli sorguyu öldürecek ve psql'in programını durdurmaz. Control-CMySQL program için psql stil davranışını almak için herhangi bir yolu var mı ? Kendimi Control-Calışkanlıkla bastırıp mysql'e tekrar giriş yapmak zorunda buluyorum .

Control Cbash'ı öldürmez ve bastığınızda oturumunuzu kapatır. Bence bu iyi bir şey. Control-C'yaptığınız işi durdur' anlamına gelir.

Yanıtlar:


7

Eğer varsa sorgu yürütme sırasında 5.1 Ctrl-C tuşlarına basın , bu "Sorgu yürütme kesildi" mesajı ile yürütme durdurmak olacak

    mysql> c SEÇİNİZ c SEÇİN rand () * 1000, sha1 (rand ()) C;
    Sorgu Ctrl + C ile iptal edildi
    HATA 1317 (70100): Sorgu yürütmesi kesildi

Bir sonraki Ctrl-Cbasış müşteriyi öldürür.

Eski sürümler söz konusu şekilde korkunç bir şekilde ölüyor, bu yüzden mümkünse yükseltin :)

Düzenle:

5.0.25 (ve 5.1.10) 'da eklendi gibi görünüyor.


2
Hala oldukça aptalca bir davranışı var. Bir sorgu sırasında CTRL + C tuşlarına bastığınızda, sorguyu iptal etmelidir. Komut isteminde CTRL + C tuşlarına bastığınızda, hiçbir şey yapmamalı ve MySQL'den ÇIKMAMALIDIR. Hiçbir şey olmuyorken Bash isteminde CTRL + C tuşlarına bastığınızda, yeni bir satır yazdırır, ancak temelde hiçbir şey yapmaz.
— Neil

Aslında bunu yapmayı tercih ettiğim şey tam olarak psql'nin yaptığı şeydi: bir sorgu girmeye yarı yoldaysanız, belki de zaten birkaç satır girdiyseniz ve bir hata yaptığınızı ve girmeyi iptal etmek istediğinizi, ardından CTRL + C komut istemine geri dönmelidir.
— zararlı

Bunu temizlemek yapacağız: ctrl-C hala bile sürüm 5.5 de MySQL CLI dışarı düşer. Andy'nin cevabı biraz belirsiz (en azından benim için) ama eğer yeni sürümlerin bu davranışı düzelttiğini hissettirdiysen yanlış yönlendirildin.
— ndemou

@ndemou hangi platformdasın? Cevabım RHEL5 üzerinde test edildi.
— Andy

@Andy Ubuntu 12.04'te test edildi. "5.0.25'te eklenmiş gibi görünüyor" yazıyorsunuz. Sizce ne eklendi? Cevap vermediğin cevabın parçası bu. Ayrıca aşağıdaki yanıtıma bakın.
— ndemou

13

Andy'nin dediği gibi, sonraki sürümlerde düzeltildi.

Eski sürümlerde eşdeğer bir klavye kısayolu yoktur.

Ancak aşağıdaki CLI bayrağıyla olmasını engelleyebilirsiniz:

--sigint-ignore

Ignore SIGINT signals (typically the result of typing Control-C).

Yakalama, --sigint-ignore ayrıca uzun süre çalışan sorguları durdurma yeteneğini de ortadan kaldırır. Ah! ve soruyla ilgili hiçbir şey sonraki sürüm (<= 5.5) AFAICT'de düzeltilmedi. Aşağıdaki cevabımı gör.
— ndemou

5

Ctrl-c kullanmak yerine satırınızın sonuna bir \ c eklerseniz, mysql'den çıkmadan satırı öldürebilirsiniz.


3

Kısa cevap: 2014'ün başından itibaren, mysql'de açıklanan davranışı elde etmenin bir yolu yoktur. İlgili hata raporuna ve dba.stackexchange'teki 3 farklı kişinin hala v5.5'te düzeltilmediğini yorumladığı bir sayfaya bakın . Ayrıca uzun bir googling sonra söyleyebildiğim kadarıyla kullanmaya değer bir geçici çözüm yoktur (neden feryat - görmezden gelmek iyi değil bakın). Andy'nin cevabı, "5.0.25 (ve 5.1.10) 'da eklenmiş gibi görünüyor. ancak büyük olasılıkla yukarıda belirtilen hata raporunda [3 Mayıs 2006 19:04] tarihli yorumla yanıltılmıştı.

--Sigint-ignore argümanı (Dan Carley'nin cevabına bakın) gerçekten de ctrl-C'ye bastığınızda mysql'nin sizi kabuğa geri döndürmesini durduracak, ancak uzun süren sorguları durdurma yeteneğini de kaldıracaktır .

Bu, gitmenizi sağlayan bir tür kullanılabilirlik hatasıdır :-( Gerçekten açık ve muhtemelen son derece kolay bir şekilde düzeltilebilir, ancak yine de burada yıllar sonra.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.