【问题标题】:MySQL error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use nearMySQL 错误:您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以获取在附近使用的正确语法
【发布时间】:2011-08-07 21:19:17
【问题描述】:

我有这样的存储过程:

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

但它给出了错误:

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

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

【问题讨论】:

    标签: mysql mysql-error-1064


    【解决方案1】:

    MYSQL PROCEDURE 步骤:

    1. 改变 delimiter 从默认 ' ; ' 到' // '

    分隔符 //

    1. 创建PROCEDURE,可以参考syntax

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

    create procedure ProG() 
    begin 
    SELECT * FROM hs_hr_employee_leave_quota;
    end;//
    
    1. 将分隔符改回“;

    分隔符;

    1. 现在执行:

    调用 ProG();

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      【解决方案3】:

      如何找出这个 MySQL 错误的意思:

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

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

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

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

      【讨论】:

      • 使用保留关键字 key 将其重命名为 key_value 并且有效。谢谢
      【解决方案4】:

      分隔符,分隔符...

      当您的过程中有多个语句时,您确实需要它们。 (换句话说,您的代码中是否有;,然后是更多语句/命令?然后,您需要使用分隔符)。

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

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

      【讨论】:

        【解决方案5】:

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

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-05-02
          • 2013-07-14
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多