MySQL Создает представление с помощью хранимой процедуры

#mysql

#mysql — сервер

Вопрос:

Добрый вечер, господа/мадам;

Я пытаюсь создать хранимую процедуру, которая обновляет представление в MySQL. В двух словах, когда база данных trainingType обновляется, просмотр trsReq (который по сути является сводной таблицей сотрудников по trainingType. Записи тренировок хранятся в представлении, trs) нуждается в обновлении.

 SET @sql = NULL;
SET @@group_concat_max_len = 5000;
SELECT GROUP_CONCAT(DISTINCT CONCAT('max(IF(type =',id,', data, "")) AS "',shortDesc,'",max(IF(type =',id,', trs.status, "")) AS "',shortDesc,'_status"')) into @sql FROM trainingType where required=1;
SET @sql = CONCAT('create view trsReq as SELECT fName, lName, empId, ', @sql, ' FROM trs left join employee on trs.empId=employee.id where employee.inactive=0 GROUP BY empId order by lName, fName limit 100');
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt; 
  

Выполнение этого набора команд приводит к следующему:

 ERROR 1142 (42000): ANY command denied to user `'user'@'localhost'` for table 

    '/var/mysqltmp/#sql_285f_0'
  

Комментарии:

1. Я должен отметить, что это входит в план хостинга hostgator. У меня нет доступа для изменения каких-либо разрешений. Я предоставил все разрешения, доступные в cPanel, для соответствующей базы данных. Из «Показать гранты»: РАЗРЕШИТЬ ИСПОЛЬЗОВАНИЕ НА . ДЛЯ ‘admin’@’localhost’, ИДЕНТИФИЦИРУЕМОГО ПАРОЛЕМ ‘ D5 ******’, ПРЕДОСТАВЬТЕ ВСЕ ПРИВИЛЕГИИ database_time3 . ДЛЯ ‘admin’@’localhost’

2. вы когда-нибудь это понимали?

3. Нет. В итоге я сделал это в PHP…

4. Спасибо за ответ. Я думаю, что после более тщательного изучения я нашел решение, в котором использовалось неподготовленное утверждение, которое сработало — хотел бы я знать, в чем разница.