2013-05-16 13 views
5

nie mogę znaleźć tych słów w instrukcji MySQL słów zastrzeżonych ale widocznie phpMyAdmin mówi, że są zarezerwowane:Czy "typ" i "status" to zastrzeżone słowo w MySQL?

enter image description here

+0

Naprawdę nie ma odniesienia do tych słów w instrukcji. Ale ponieważ są to słowa, które noszą "znaczenie", istnieją ograniczenia w jego stosowaniu. Stworzyłem tabele z tymi, jeśli to nie przeszkadza mu manipulować nimi, po prostu zignoruj. – PiLHA

+0

@PiLHA: Chodzi o to, że słowa zastrzeżone * nie mogą * być używane jako niecytowane identyfikatory SQL; te słowa * mogą *. phpMyAdmin jest niepoprawny, aby stwierdzić, że te słowa są zarezerwowane. – eggyal

+0

@eggyal O ile wiem, zarówno w SQLServer, jak to się dzieje w MySQL. Maksymalnym ograniczeniem dla używania warunków jest dodanie "" lub [] i rozwiązanie. Błąd lub nie, użyj. – PiLHA

Odpowiedz

11

Jest to technicznie błąd w phpMyAdmin. Od 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 (

(lista obejmuje 'STATUS' i 'TYPE', które wyraźnie nie są na wskazanej stronie podręcznika).

Bug #948 zidentyfikował, że phpMyAdmin w tym czasie użył wielkich liter niektórych nazw kolumn (w tym STATUS) z powodu (błędnie) zidentyfikowanych jako słowa zastrzeżone z tej listy; te słowa kluczowe były początkowo removed z listy wyniku, ale to commit był następnie reversed dla the reasons explained by Alexander Turek:

Twój naprawić bałagan eleganckiego drukarkę! To raczej problem z analizatorem.

FIRST i STATUS znajdowały się wewnątrz tej tablicy słów zastrzeżonych , ponieważ są one częścią poleceń MySQL. STATUS jest używany w " SHOW STATUS " i PIERWSZA część ALTER sytax.

Co więcej, ten błąd dotyczy dużo więcej słów niż tylko STATUS i FIRST. Nie chcę wiedzieć, co się stanie, jeśli usuniemy je wszystkie z tablicy słów zastrzeżonych ...

Z powodu zmiany oba zapytania nie są już dobrze oznaczone .

Oznacza to, że phpMyAdmin używa tej samej listy słów do podświetlania składni w jej ładnej drukarce, tak jak robi to w celu wykrywania zarezerwowanych słów; jest to błędne i prowadzi do ostrzeżeń, które obserwujesz.

Powiązane problemy