phpMyAdmin
 sql >> Datenbank >  >> Database Tools >> phpMyAdmin

Ist Typ und Status ein reserviertes Wort in MySQL?

Dies ist technisch gesehen ein Fehler in phpMyAdmin. Von libraries/sqlparser.data.php :

/**
 * words forbidden to be used as column or table name wihtout quotes
 * as seen in http://dev.mysql.com/doc/mysql/en/reserved-words.html
 *
 * @global array MySQL forbidden words
 */
$PMA_SQPdata_forbidden_word = array (

(Liste enthält 'STATUS' und 'TYPE' , die sich eindeutig nicht auf der referenzierten Handbuchseite befinden).

Fehler Nr. 948 festgestellt, dass phpMyAdmin damals bestimmte Spaltennamen großgeschrieben hat (einschließlich STATUS ) aufgrund (irrtümlicher) Identifizierung als reservierte Wörter aus dieser Liste; diese Schlüsselwörter wurden ursprünglich entfernt aus der Liste, aber dieser Commit wurde anschließend rückgängig gemacht , für die von Alexander Turek erklärten Gründe :

Ihr Fix bringt den Pretty-Printer durcheinander! Das ist eher ein Analysator-Problem.

FIRST und STATUS befinden sich in diesem Array mit reservierten Wörtern, weil sie Teil von MySQL-Befehlen sind. STATUS wird in "SHOW STATUS" und im FIRST-Teil der ALTER-Syntax verwendet.

Außerdem betrifft dieser Fehler viel mehr Wörter als nur STATUS und FIRST. Ich möchte nicht wissen, was passiert, wenn wir sie alle aus dem Array für reservierte Wörter entfernen...

Aufgrund Ihrer Änderung werden beide Abfragen nicht mehr gut hervorgehoben.

Das heißt, phpMyAdmin verwendet dieselbe Liste von Wörtern, um die Syntaxhervorhebung in seinem hübschen Drucker durchzuführen, wie es für die Erkennung reservierter Wörter verwendet wird; dies ist fehlerhaft und führt zu den von Ihnen beobachteten Warnungen.