2013-08-22 1 views
0

Почему я получаю сообщение об ошибке?Что вызывает синтаксическую ошибку в этом запросе MySQL?

 

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'read, compose, reply, moderate FROM article_permissions' at line 2 
 
SELECT 
permission_id, category_id, group_id, read, compose, reply, moderate 
FROM article_permissions 
WHERE category_id = 6 
    AND group_id = 0 
ORDER BY permission_id DESC 
LIMIT 1 

Это таблица:

 
CREATE TABLE IF NOT EXISTS `article_permissions` (
    `permission_id` int(15) NOT NULL AUTO_INCREMENT, 
    `category_id` int(15) NOT NULL, 
    `group_id` int(15) NOT NULL, 
    `read` tinyint(1) NOT NULL, 
    `compose` tinyint(1) NOT NULL, 
    `reply` tinyint(1) NOT NULL, 
    `moderate` tinyint(1) NOT NULL, 
    PRIMARY KEY (`permission_id`) 
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ; 

ответ

3

read является reserved word для MySQL. Чтобы использовать его в качестве имени столбца в своем запросе, поместите его в обратные ссылки (как и в инструкции создания таблицы).

SELECT 
`permission_id`, `category_id`, `group_id`, `read`, `compose`, `reply`, `moderate` 
FROM article_permissions 
WHERE `category_id` = 6 
    AND `group_id` = 0 
ORDER BY `permission_id` DESC 
LIMIT 1 

(Если вы включите ANSI_QUOTES option, вы можете использовать двойные кавычки вместо этого, который более компактен.)

+0

Ах да. кто это сделал. Спасибо! – ShoeLace1291

+0

+1 для связи непосредственно с руководством 5.7! Вы опережаете кривую, сэр. –

+0

@ ShoeLace1291: Добро пожаловать, рад, что это помогло. :-) –