MySQL错误:你的SQL语法有错误;查看与您的 MySQL 服务器版本对应的手册,了解使用 near

问题描述 投票:0回答:6

我有这样的存储过程:

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

但它给出了错误:

#1064
- 你的 SQL 语法有错误;检查与您的 MySQL 服务器版本对应的手册,了解在第 3 行的 '' 附近使用的正确语法

错误是什么意思?第 2 行有什么问题?

mysql sql database syntax-error mysql-error-1064
6个回答
59
投票

在使用触发器、存储过程等之前必须更改分隔符。

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

17
投票

如何找出这个 MySQL 错误试图表达的意思:

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

这个错误没有任何线索。你必须仔细检查所有这些项目,看看你的错误在哪里:

  1. 您省略或添加了不必要的符号:
    !@#$%^&*()-_=+[]{}\|;:'",<>/?
  2. 放错位置、丢失或不必要的关键字:
    select
    into
    或无数其他关键字。
  3. 您的查询中有看起来像 ascii 字符但无法识别的 unicode 字符。
  4. 错位、缺失或不必要的空格或关键字之间的换行符。
  5. 不匹配的单引号、双引号、圆括号或大括号。

尽可能多地从损坏的查询中删除,直到它开始工作。然后下次使用具有健全语法报告系统的 PostgreSQL。


6
投票

定界符,定界符...

当你的程序中有多个语句时,你真的需要它们。 (换句话说,您的代码中是否有

;
,然后是更多的语句/命令?然后,您需要使用分隔符)。

对于像你这样简单的程序,你可以这样做:

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

0
投票

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


0
投票

MYSQL 过程步骤:

  1. 从默认的'更改定界符; ' 到 '// '

分隔符 //

  1. create PROCEDURE,可以参考syntax

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

create procedure ProG() 
begin 
SELECT * FROM hs_hr_employee_leave_quota;
end;//
  1. 将定界符改回 ' ; '

定界符;

  1. 现在执行:

调用 ProG();


0
投票

我在下面遇到了同样的错误:

ERROR 1064 (42000):你的SQL语法有错误;检查 与您的 MySQL 服务器版本相对应的手册 在第 3 行的 ')' 附近使用的语法

当使用尾随逗号时,如下所示:

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

所以,我删除了结尾的逗号,如下所示,然后错误就解决了:

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

而且,我在下面也遇到了同样的错误:

ERROR 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
);
© www.soinside.com 2019 - 2024. All rights reserved.