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.