Unter Linux und vielen anderen Systemen können Sie beim Navigieren im Terminal drücken Tab, um ein Verzeichnis oder einen Dateinamen automatisch zu vervollständigen.
Ich frage mich, ob es so etwas im MySQL-Terminal gibt. Wenn ich zum Beispiel die Beschreibung von erhalten möchte, someTableWithRidiculousLongName
könnte ich describe someTableW
dann Tabeingeben und der Rest wird automatisch vervollständigt.
Gibt es so etwas im MySQL-Terminal?
mysql
autocomplete
console
Alan B. Dee
quelle
quelle
Antworten:
Bearbeiten oder erstellen Sie eine Datei, die
.my.cnf
in Ihrem Home-Verzeichnis aufgerufen wird und Folgendes enthält:quelle
--disable-auto-rehash
Flagge. Aber jetzt haben Sie es standardmäßig aktiviert.So aktivieren Sie die automatische Vervollständigung innerhalb der MySQL-Eingabeaufforderung:
mysql> \#
Danach können Sie Folgendes eingeben:
mysql> describe someTableW[TAB]
Bekommen:
mysql> describe someTableWithRidiculousLongName
quelle
mysql> rehash
- Alternativ zu "\ #" können wir auch den Befehl "rehash" mysql wie folgt eingeben. Der Gedanke, als "Aufwärmen" zu teilen, könnte für manche Leute wie mich leichter zu merken sein:mysql> rehash
Danach beginnt die automatische Vervollständigung zu funktionieren!Starten Sie die MySQL-Konsole mit einer zusätzlichen Option
--auto-rehash
, zmysql --auto-rehash -u root -p
quelle
Ich weiß, dass dies eine alte Frage ist, aber ich habe einen sehr hilfreichen MySQL-CLI-Client mit erweiterter automatischer Vervollständigung gefunden: mycli . Es ist viel intelligenter als die integrierte Auto-Rehash-Funktion.
quelle
auto-rehash
funktioniert bei mir nicht Auf mycli und boom umgestellt .... hat wie ein Profi funktioniert.Unter OS X 10.11.6 habe ich --auto-rehash wie oben beschrieben eingestellt, aber es hat nicht funktioniert. (Dies ist OS X, daher wird MySQL mit der BSD- Bibliothek libedit kompiliert .)
Dann erinnerte ich mich, dass ich vi-Schlüsselbindungen für den MySQL-Client festgelegt hatte, indem ich ~ / .editrc erstellte, das eine Zeile enthielt: bind -v . Dies funktioniert hervorragend, um mir eine vi-ähnliche Navigation im MySQL-Client zu ermöglichen, hat jedoch die Vervollständigung des Spaltennamens unterbrochen (ich konnte dies durch Entfernen von .editrc überprüfen ).
Also habe ich ein bisschen recherchiert und festgestellt, dass ~ / .editrc mindestens die folgenden Zeilen haben sollte:
Mit dieser zusätzlichen Zeile funktioniert die Namensvervollständigung in MySQL korrekt und die vi-ähnliche Navigation funktioniert auch. (Es gibt andere .editrc-Einstellungen, die die MySQL-Client-Navigation erheblich verbessern, aber dies ist nicht der richtige Ort, um diesen Diskussionsthread zu starten.)
quelle
Einige Hinweise zur automatischen Wiederaufbereitung:
Wenn Sie die automatische Vervollständigung aktivieren, bearbeiten Sie die MySQL-Konfigurationsdatei.
Sie können dies für alle Benutzer oder nur für einen Benutzer tun:
/etc/my.cnf
: Alle Nutzer~/.my.cnf
: Tatsächlicher BenutzerSie können die automatische Vervollständigung auch deaktivieren, indem Sie Folgendes hinzufügen:
Auszug aus: http://www.sysadmit.com/2016/08/linux-mysql-autocompletar.html
quelle
Sie können auch basierend auf dem Befehlsverlauf automatisch vervollständigen. Beginnen Sie mit der Eingabe und rufen Sie dann die Tasten auf, die an
ed-search-prev-history
und gebunden sinded-search-next-history
. Dies gilt, wenn MySQL mit libedit-Unterstützung geliefert wird. Die Standard-Tastenkombinationen sind Strg-P und Strg-N, dies kann jedoch in .editrc angepasst werden. Mein Beispiel für Strg-Auf und Strg-Ab:# start typing, then press Ctrl-Up bind "\e[1;5A" ed-search-prev-history # start typing, then press Ctrl-Up, then Ctrl-Down bind "\e[1;5B" ed-search-next-history
Bisher basierte MySQL auf Readline und dann
history-search-backward
undhistory-search-forward
sind die richtigen Befehle. Die Konfiguration erfolgte dann mittels .inputrc. Gleiches Beispiel wie oben:# these are the key bindings for the readline library # start typing, then press Ctrl-Up "\e[1;5A": history-search-backward # start typing, then press Ctrl-Up, then Ctrl-Down "\e[1;5B": history-search-forward
Angenommen, Sie haben mit der Eingabe begonnen
sel
und Strg-Upselect * from some_long_table_name
aufgerufen. Wenn dies ein Befehl ist, den ich zuvor verwendet habe, wird er angezeigt.quelle