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

Il tipo e lo stato sono una parola riservata in MySQL?

Questo è, tecnicamente, un bug in phpMyAdmin. Da 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 (

(l'elenco include 'STATUS' e 'TYPE' , che chiaramente non sono nella pagina di manuale di riferimento).

Bug #948 ha identificato che phpMyAdmin in quel momento scriveva in maiuscolo alcuni nomi di colonne (incluso STATUS ) per essere (erroneamente) identificati come parole riservate di questo elenco; queste parole chiave sono state inizialmente rimosse dall'elenco di conseguenza, ma tale commit è stato successivamente invertito , per i motivi spiegati da Alexander Turek :

La tua correzione ha incasinato la bella stampante! Questo è piuttosto un problema dell'analizzatore.

FIRST e STATUS sono stati all'interno di questo array di parole riservate perché fanno parte dei comandi MySQL. STATUS è usato in "SHOW STATUS" e FIRST parte della sitassi ALTER.

Inoltre, questo bug interessa molte più parole di justSTATUS e FIRST. Non voglio sapere cosa succede se li rimuovessimo tutti dall'array di parole riservate...

A causa della tua modifica, entrambe le query non vengono più evidenziate bene.

Vale a dire, phpMyAdmin utilizza lo stesso elenco di parole per condurre l'evidenziazione della sintassi nella sua graziosa stampante come fa per rilevare le parole riservate; questo è errato e porta agli avvertimenti che osservi.