2013-05-16 3 views
5

я не могу найти их в словах, в руководстве MySQL для зарезервированных слов, но, по-видимому PHPMYADMIN говорит, что они защищены:Является ли «тип» и «статус» зарезервированным словом в MySQL?

enter image description here

+0

Действительно, ссылки на эти слова в руководстве отсутствуют. Но поскольку они являются словами, несущими «смысл», существуют ограничения на его использование. Я создал таблицы с ними, если это не мешает ему манипулировать ими, просто игнорируйте. – PiLHA

+0

@PiLHA: Дело в том, что зарезервированные слова * не могут * использоваться как неуказанные идентификаторы SQL; тогда как эти слова * могут *. phpMyAdmin неверно указывать, что эти слова зарезервированы. – eggyal

+0

@eggyal Насколько я знаю, как в SQLServer, так и в MySQL. Максимальное ограничение использования терминов заключается в том, чтобы добавить '' или [] и решить. Ошибка или нет, используйте. – PiLHA

ответ

11

Это технически ошибка в PhpMyAdmin. От 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 (

(список включает в себя 'STATUS' и 'TYPE', которые явно не на странице ссылочного вручную).

Bug #948 идентифицировал, что phpMyAdmin в это время заглавные буквы определенных имен столбцов (включая STATUS) из-за (ошибочно) идентифицируется как зарезервированные слова из этого списка; эти ключевые слова были первоначально removed из списка в результате, но, выделяющих впоследствии reversed для the reasons explained by Alexander Turek:

Ваше исправление портит довольно-принтер! Это скорее проблема анализатора.

FIRST и STATUS находятся внутри этого зарезервированного массива слов , потому что они являются частью команд MySQL. STATUS используется в " ПОКАЗАТЬ СТАТУС " и ПЕРВУЮ часть ALTER sytax.

Кроме того, эта ошибка затрагивает гораздо больше слов, чем просто СТАТУС И ПЕРВЫЙ. Я не хочу знать, что произойдет, если мы с удалим их из зарезервированных слов ...

Из-за ваших изменений оба запроса не подсвечиваются хорошо .

То есть, phpMyAdmin использует тот же список слов для выделения синтаксиса в своем симпатичном принтере, как и для обнаружения зарезервированных слов; это ошибочно и приводит к предупреждениям, которые вы наблюдаете.