我有这样的存储过程:
CREATE PROCEDURE ProG() BEGIN SELECT * FROM `hs_hr_employee_leave_quota`; END
字符串但它给出了错误:#1064-您的SQL语法中有一个错误;请检查与您的MySQL服务器版本对应的手册,以获得在第3行“”附近使用的正确语法错误是什么意思?第2行有什么问题?
#1064
6ojccjat1#
在使用触发器、存储过程等之前,您必须更改XML。
delimiter // create procedure ProG() begin SELECT * FROM hs_hr_employee_leave_quota; end;// delimiter ;
字符串
stszievb2#
如何找出这个MySQL错误是想说什么:
#1064 - You have an error in your SQL syntax;
字符串这个错误没有任何线索。你必须仔细检查所有这些项目,看看你的错误在哪里:1.您忽略或包含了一个不必要的符号:!@#$%^&*()-_=+[]{}\|;:'",<>/?1.一个放错位置的、丢失的或不必要的关键字:select、into或无数其他关键字。1.您的查询中有一些Unicode字符看起来像字符,但无法识别。1.关键字之间的空格或换行符位置错误、丢失或不必要。1.不匹配的单引号、双引号、括号或大括号。尽可能多地从坏的查询中删除,直到它开始工作。然后下次使用PostgreSQL,它有一个健全的语法报告系统。
!@#$%^&*()-_=+[]{}\|;:'",<>/?
select
into
eagi6jfj3#
分隔符分隔符当你的过程中有多个语句时,你真的需要它们。(换句话说,你的代码中有一个;,然后有更多的语句/命令吗?然后,你需要使用分隔符)。对于像你这样简单的rpocket,你可以这样做:
;
CREATE PROCEDURE ProG() SELECT * FROM `hs_hr_employee_leave_quota`;
4ioopgfo4#
这可能是mysql上的内存问题,请尝试在my.ini中增加max_allowed_packet
cig3rfwq5#
MYSQL PROCEDURE步骤:
1.将配置从默认值**' ; '更改为'/**'定义符//1.创建PROCEDURE,可以参考syntax
注意:不要忘记以**' ; '**结束语句
create procedure ProG() begin SELECT * FROM hs_hr_employee_leave_quota; end;//
字符串1.将字符串改回“;”(c)1.现在执行:return();
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中的内置函数:
count
(
-- 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权限授予用户john(GRANT)时,如下所示:
root
*.person
person
john
GRANT PROCESS ON *.person TO 'john'@'localhost';
型所以,我给PROCESS特权在所有数据库中的所有表(*.*),如下所示,然后我可以解决这个错误。* 我的答案解释了更多:
PROCESS
*.*
GRANT PROCESS ON *.* TO 'john'@'localhost';
型
6条答案
按热度按时间6ojccjat1#
在使用触发器、存储过程等之前,您必须更改XML。
字符串
stszievb2#
如何找出这个MySQL错误是想说什么:
字符串
这个错误没有任何线索。你必须仔细检查所有这些项目,看看你的错误在哪里:
1.您忽略或包含了一个不必要的符号:
!@#$%^&*()-_=+[]{}\|;:'",<>/?
1.一个放错位置的、丢失的或不必要的关键字:
select
、into
或无数其他关键字。1.您的查询中有一些Unicode字符看起来像字符,但无法识别。
1.关键字之间的空格或换行符位置错误、丢失或不必要。
1.不匹配的单引号、双引号、括号或大括号。
尽可能多地从坏的查询中删除,直到它开始工作。然后下次使用PostgreSQL,它有一个健全的语法报告系统。
eagi6jfj3#
分隔符分隔符
当你的过程中有多个语句时,你真的需要它们。(换句话说,你的代码中有一个
;
,然后有更多的语句/命令吗?然后,你需要使用分隔符)。对于像你这样简单的rpocket,你可以这样做:
字符串
4ioopgfo4#
这可能是mysql上的内存问题,请尝试在my.ini中增加max_allowed_packet
cig3rfwq5#
MYSQL PROCEDURE步骤:
1.将配置从默认值**' ; '更改为'/**'
定义符//
1.创建PROCEDURE,可以参考syntax
注意:不要忘记以**' ; '**结束语句
字符串
1.将字符串改回“;”
(c)
1.现在执行:
return();
kxxlusnw6#
下面是同样的错误:
错误1064(42000):您的SQL语法中有一个错误;请检查与您的MySQL服务器版本对应的手册,以获得在第3行')'附近使用的正确语法
当使用结尾逗号时,如下所示:
字符串
所以,我删除了尾随逗号,如下所示,然后错误就解决了:
型
我也得到了下面同样的错误:
错误1064(42000):您的SQL语法中有一个错误;请检查与您的MySQL服务器版本对应的手册,以获得在第1行'count(num int)'附近使用的正确语法
当
count
和(
之间没有空格时,如下所示,因为它被识别为count(),这是MySQL中的内置函数:型
所以,我在
count
和(
之间做了一个空格,如下所示,然后错误就解决了:型
我也得到了下面同样的错误:
错误1064(42000):您的SQL语法中有一个错误;请检查与您的MySQL服务器版本对应的手册,以获得正确的语法,并在第1行使用'person TO ' john '@' localhost ''附近
当我通过使用用户
root
登录,将所有数据库(*.person
)中仅person
表的PROCESS权限授予用户john
(GRANT)时,如下所示:型
所以,我给
PROCESS
特权在所有数据库中的所有表(*.*
),如下所示,然后我可以解决这个错误。* 我的答案解释了更多:型