MySQL错误:您的SQL语法中有一个错误;请检查与您的MySQL服务器版本对应的手册,以获取附近使用的正确语法

flmtquvp  于 11个月前  发布在  Mysql
关注(0)|答案(6)|浏览(180)

我有这样的存储过程:

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

字符串
但它给出了错误:
#1064-您的SQL语法中有一个错误;请检查与您的MySQL服务器版本对应的手册,以获得在第3行“”附近使用的正确语法
错误是什么意思?第2行有什么问题?

6ojccjat

6ojccjat1#

在使用触发器、存储过程等之前,您必须更改XML。

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

字符串

stszievb

stszievb2#

如何找出这个MySQL错误是想说什么:

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

字符串
这个错误没有任何线索。你必须仔细检查所有这些项目,看看你的错误在哪里:
1.您忽略或包含了一个不必要的符号:!@#$%^&*()-_=+[]{}\|;:'",<>/?
1.一个放错位置的、丢失的或不必要的关键字:selectinto或无数其他关键字。
1.您的查询中有一些Unicode字符看起来像字符,但无法识别。
1.关键字之间的空格或换行符位置错误、丢失或不必要。
1.不匹配的单引号、双引号、括号或大括号。
尽可能多地从坏的查询中删除,直到它开始工作。然后下次使用PostgreSQL,它有一个健全的语法报告系统。

eagi6jfj

eagi6jfj3#

分隔符分隔符
当你的过程中有多个语句时,你真的需要它们。(换句话说,你的代码中有一个;,然后有更多的语句/命令吗?然后,你需要使用分隔符)。
对于像你这样简单的rpocket,你可以这样做:

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

字符串

4ioopgfo

4ioopgfo4#

这可能是mysql上的内存问题,请尝试在my.ini中增加max_allowed_packet

cig3rfwq

cig3rfwq5#

MYSQL PROCEDURE步骤:

1.将配置从默认值**' ; '更改为'/**'
定义符//
1.创建PROCEDURE,可以参考syntax

注意:不要忘记以**' ; '**结束语句

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

字符串
1.将字符串改回“;
(c)
1.现在执行:
return();

kxxlusnw

kxxlusnw6#

下面是同样的错误:
错误1064(42000):您的SQL语法中有一个错误;请检查与您的MySQL服务器版本对应的手册,以获得在第3行')'附近使用的正确语法
当使用结尾逗号时,如下所示:

create table person(
  name varchar(50),
);             -- ↑ A trailing comma

字符串
所以,我删除了尾随逗号,如下所示,然后错误就解决了:

create table person(
  name varchar(50)
);             -- ↑ No trailing comma


我也得到了下面同样的错误:
错误1064(42000):您的SQL语法中有一个错误;请检查与您的MySQL服务器版本对应的手册,以获得在第1行'count(num int)'附近使用的正确语法
count(之间没有空格时,如下所示,因为它被识别为count(),这是MySQL中的内置函数:

-- No space
                 ↓
create table count(
  num int
);


所以,我在count(之间做了一个空格,如下所示,然后错误就解决了:

-- Make a space
                  ↓
create table count (
  num int
);


我也得到了下面同样的错误:
错误1064(42000):您的SQL语法中有一个错误;请检查与您的MySQL服务器版本对应的手册,以获得正确的语法,并在第1行使用'person TO ' john '@' localhost ''附近
当我通过使用用户root登录,将所有数据库(*.person)中仅person表的PROCESS权限授予用户johnGRANT)时,如下所示:

GRANT PROCESS ON *.person TO 'john'@'localhost';


所以,我给PROCESS特权在所有数据库中的所有表(*.*),如下所示,然后我可以解决这个错误。* 我的答案解释了更多:

GRANT PROCESS ON *.* TO 'john'@'localhost';

相关问题