MySQL error: у вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MySQL, для правильного синтаксиса для использования рядом

у меня есть хранимая процедура такой:

CREATE PROCEDURE ProG()
  BEGIN
    SELECT * FROM `hs_hr_employee_leave_quota`;
  END

но это дает ошибку:

#1064 - у вас есть ошибка в вашем синтаксисе SQL; проверьте руководство, которое соответствует вашей версии сервера MySQL для правильного синтаксиса, чтобы использовать рядом " в строке 3

что означает ошибка означает? Что не так с линией номер 2?

4 ответов


вы должны изменить разделитель перед использованием триггеров, хранимых процедур и так далее.

delimiter //
create procedure ProG() 
begin 
SELECT * FROM hs_hr_employee_leave_quota;
end;//
delimiter ;

как узнать, что эта ошибка MySQL пытается сказать:

#1064 - You have an error in your SQL syntax;

в этой ошибке нет никаких подсказок. Вы должны дважды проверить все эти элементы, чтобы увидеть, где ваша ошибка:

  1. вы опустили или включили ненужный символ:!@#$%^&*()-_=+[]{}\|;:'",<>/?
  2. неуместное, отсутствующее или ненужное ключевое слово:select, into, или бесчисленное множество других.
  3. у вас есть символы юникода, которые выглядят как символы ascii в вашем запрос, но не распознаются.
  4. неуместные, отсутствующие или ненужные пробелы или новые строки между ключевыми словами.
  5. непревзойденные одинарные кавычки, двойные кавычки, скобки или скобки.

уберите как можно больше из сломанного запроса, пока он не начнет работать. А затем используйте PostgreSQL в следующий раз, когда у него будет нормальная система отчетов синтаксиса.


разделители, разделители...

они действительно нужны, когда в вашей процедуре есть несколько операторов. (другими словами, у вас есть ; в вашем коде, а затем больше операторов / команд? Затем вам нужно использовать разделители).

для такого простого rpocedure, как ваш, вы могли бы просто сделать:

CREATE PROCEDURE ProG()
  SELECT * FROM `hs_hr_employee_leave_quota`;

Это может быть проблема memmory на mysql попробуйте увеличить max_allowed_packet в My.ini