Wie zeige ich eine MySQL-Warnung an, die gerade passiert ist?

160

Ich habe gerade eine einfache MySQL CREATE TABLE-Anweisung ausgeführt, die die Zeile erzeugt hat

"Abfrage OK, 0 Zeilen betroffen, 1 Warnung (0,07 Sek.)."

Es zeigte mir jedoch nicht wirklich, was die Warnung war. Wie können Sie den Inhalt einer Warnung sehen, die gerade aufgetreten ist? Ich benutze MySQL 5.1, wenn es einen Unterschied macht. Das einzige, was ich online gefunden habe, war "SHOW WARNINGS"; aber das nur produziert

"Leerer Satz (0,00 Sek.)."

Pops
quelle
1
Wie andere für interaktives MySQL betont haben, können Sie (1.) die interaktive Sitzung mit --show-warnings(siehe ) starten man mysqloder (2.) wenn Sie sich in einer vorhandenen interaktiven Sitzung befinden, können Sie dasselbe Verhalten mit warnings(siehe man mysql) aktivieren .
Trevor Boyd Smith

Antworten:

200

SHOW WARNINGSist die einzige mir bekannte Methode, aber Sie müssen sie sofort nach einer Abfrage ausführen, an die Warnungen angehängt sind. Wenn Sie zwischendurch andere Abfragen ausgeführt oder die Verbindung getrennt haben, SHOW WARNINGSfunktioniert dies nicht.

Die MySQL-Handbuchseite für SHOW WARNINGS enthält keine anderen Methoden, daher bin ich mir ziemlich sicher, dass Sie daran festhalten .

Zombat
quelle
Dies hat mir geholfen - aber Sie müssen es sofort nach einer Abfrage ausführen, an die Warnungen angehängt waren
wie
98

Sie können die Befehlszeile auch so einstellen, dass nach einer Abfrage mit \ W immer Warnungen angezeigt werden

Sie können sie mit \ w wieder ausschalten

HorusKol
quelle
3
Das war perfekt für mich. Fügen Sie '\ W' oben in mein Skript ein und wir können loslegen!
Matt Klein
1
Es ist noch vorhanden: dev.mysql.com/doc/refman/5.7/en/mysql-commands.html, aber Sie verwenden den command-line mysqlClient möglicherweise nicht . Es funktioniert nur in mysql, nicht in einer MySQL-Bibliothek.
Yvan
Gibt es eine Möglichkeit, dieses Flag aus der Datei .my.cnf zu setzen?
StR
22

@HorusKol, hast du Dokumentation dafür? Ich konnte keine finden. Aber ich habe herausgefunden, dass die Befehlszeilenoption --show-warningsden Job gemäß dem MySQL-Handbuch erledigt .

Pops
quelle
6
wenn Sie tun \? In der Befehlszeile für die MySQL-Hilfe sehen Sie die beiden Optionen für \ w (Warnungen aus) und \ W (Warnungen ein) - dies ist möglicherweise versionabhängig, aber ich bin mir ziemlich sicher, dass es die ganze Zeit in MySQL 5 war.
HorusKol
@HorusKol, doppelter Dank, dass du zurückgekommen bist und meinen schrecklichen Kommentar als Antwort beantwortet hast. (Ich war neu und wusste es nicht besser!)
Pops