2016-07-20 10 views
1

Hallo Ich versuche, unten auf Ubuntu TerminalFehler bei Übergabe des Arguments als SQL MYSQL über -e mit wie in den Zustand

mysql -u root -proot -e "SELECT * FROM knexus.redis_cache WHERE `key` LIKE '%hub.local%'" 

Ich erhalte unten Fehler

Das Programm ‚Schlüssel zu tun 'ist derzeit nicht installiert. Sie können es durch die Eingabe installieren:

sudo apt-get install Esel

ERROR 1064 (42000) in Zeile 1: Sie haben einen Fehler in Ihrer SQL-Syntax; Überprüfen Sie das Handbuch, das Ihrer MySQL-Server-Version für die richtige Syntax in der Nähe von 'LIKE'% hub.local% 'entspricht Zeile 1

Allerdings SQL ordnungsgemäß auf MYSQL-Terminal ausgeführt werden.

Ich denke, das könnte Ausgabe Problem Zeichen Problem sein, wie ich sehe sudo apt-get install donkey.

+1

ubuntu versucht, wegen der Backticks \ 'key \' als Befehl auszuführen. Du musst den Backticks entkommen Ich denke – Jens

+1

Benutze doubleescape Backticks: "... wo \\\\' key \\\\ 'like ..." – Solarflare

+0

@Solarflare Ich habe eine Idee, unten funktioniert für mich mysql -u root - proot -e "SELECT * FROM knexus.redis_cache WHERE \\' key \\ 'LIKE '% hub.local%" " –

Antwort

2

Die Ticks framing key bewirken, dass die bash den Schlüssel als Befehl behandelt und ihn durch seine Ausgabe im Befehl ersetzt. Sie könnten entweder ohne sie versuchen oder den gesamten Befehl in einfache Anführungszeichen setzen und die% hub.local% in doppelte Anführungszeichen setzen.