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

Er type og status et reserveret ord i MySQL?

Dette er teknisk set en fejl i phpMyAdmin. Fra 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 (

(listen inkluderer 'STATUS' og 'TYPE' , som tydeligvis ikke er på den refererede manualside).

Bug #948 identificerede, at phpMyAdmin på det tidspunkt skrev visse kolonnenavne med store bogstaver (inklusive STATUS ) på grund af (fejlagtigt) at blive identificeret som reserverede ord fra denne liste; disse søgeord blev oprindeligt fjernet fra listen som følge heraf, men denne commit blev efterfølgende tilbageført , af grundene forklaret af Alexander Turek :

Din rettelse ødelægger den smukke printer! Dette er snarere et analysatorproblem.

FIRST og STATUS har været inde i dette reserverede ord-array, fordi de er en del af MySQL-kommandoer. STATUS bruges i "VIS STATUS" og FIRST del af ALTER-sytaksen.

Desuden påvirker denne fejl mange flere ord end bare STATUS og FIRST. Jeg vil ikke vide, hvad der sker, hvis man fjerner dem alle fra det reserverede ord-array...

På grund af din ændring er begge forespørgsler ikke fremhævet godt længere.

Det vil sige, phpMyAdmin bruger den samme liste over ord til at udføre syntaksfremhævning i sin smukke printer, som den gør til at detektere reserverede ord; dette er fejlagtigt og fører til de advarsler, du observerer.




  1. ROW_NUMBER() i en visning i SQL Server 2005

  2. Vælg rækker efter en række med en bestemt værdi

  3. Har problemer med at installere phpmyadmin på PHP7 Apache/2.4.7 (Ubuntu)

  4. Kan ikke logge ind på phpmyadmin med root-bruger