2013-05-16 17 views
5

Non riesco a trovare questi in parole del manuale di MySQL per parole riservate ma a quanto pare phpMyAdmin dice che sono riservati:"Tipo" e "stato" sono parole riservate in MySQL?

enter image description here

+0

In realtà, non v'è alcun riferimento a queste parole del manuale. Ma poiché sono parole che portano un "significato", esistono restrizioni al suo uso. Ho creato le tabelle con questi, se questo non gli impedisce di manipolarli semplicemente ignorare. – PiLHA

+0

@PiLHA: il punto è che le parole riservate * non possono * essere utilizzate come identificativi SQL non quotati; mentre queste parole * possono *. phpMyAdmin non è corretto per dichiarare che queste parole sono riservate. – eggyal

+0

@eggyal Per quanto ne so, entrambi in SQLServer come succede in MySQL. La restrizione massima per l'uso dei termini è aggiungere '' o [] e risolvere. Bug o no, usa. – PiLHA

risposta

11

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 (

(elenco comprende 'STATUS' e 'TYPE', che non sono chiaramente sulla pagina di manuale di riferimento).

Bug #948 identificato che phpMyAdmin in quel momento in maiuscolo alcuni nomi di colonne (incluso STATUS) a causa dell'identificazione (erroneamente) di parole riservate da questo elenco; le parole chiave erano inizialmente removed dalla lista come risultato, ma che commettono era successivamente reversed, per the reasons explained by Alexander Turek:

il fix scombina la bella-stampa! Questo è piuttosto un problema con l'analizzatore.

FIRST e STATUS sono all'interno di questo array di parole riservate perché fanno parte dei comandi MySQL. STATO è utilizzato in " SHOW STATUS " e la prima parte del ALTER sytax.

Inoltre, questo bug colpisce molte più parole che solo STATUS e FIRST. Non voglio sapere cosa succede se rimuoviamo tutti dalla serie di parole riservate ...

A causa della modifica, entrambe le query non sono evidenziate bene .

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

Problemi correlati