在腻子中运行file.sql文件时出现错误1064(42000)

时间:2018-09-05 11:11:10

标签: mysql mysql-error-1064

我的file.sql具有以下代码

use Database_name;
CREATE PROCEDURE sp_Create_Calendar_Date()
BEGIN

INSERT INTO CALENDAR_DATE
select date_format(selected_date,'%Y%m%d') CALENDAR_DATE,
    week(SELECTED_DATE) WEEK_NUMBER,
    substr(monthname(SELECTED_DATE),1,3) MONTH_NAME,
    month(SELECTED_DATE) MONTH_NUMBER,
    year(SELECTED_DATE) YEAR_NAME,
    dayname(SELECTED_DATE) DAY_NAME,
    concat( 'Q',quarter(SELECTED_DATE)) QUARTER_LABEL,
    extract(year_month from selected_date) MONTH_SPLIT_NAME,
    concat( year(SELECTED_DATE),concat('Q',timestampdiff(month, @FiscalYearStartDate, @today) div 3 + 1)) FISCAL_QUARTER_LABEL,
    dayofyear(selected_date) DAY_OF_YEAR,
     'N' ORGANAIZATION_HOLIDAY
from 
(select adddate('1970-01-01',t4*10000 + t3*1000 + t2*100 + t1*10 + t0) selected_date from
 (select 0 t0 union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9) t0,
 (select 0 t1 union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9) t1,
 (select 0 t2 union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9) t2,
 (select 0 t3 union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9) t3,
 (select 0 t4 union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9) t4) v
where selected_date between MAKEDATE(year(DATE_ADD(date_format(sysdate(),'%Y%m%d'),interval -2 YEAR)),1) and 
        LAST_DAY(DATE_ADD(DATE_ADD(date_format(sysdate(),'%Y%m%d'),interval 5 YEAR), INTERVAL 12-MONTH(DATE_ADD(date_format(sysdate(),'%Y%m%d'),interval 5 YEAR)) MONTH));           
END

在腻子中,我像

那样调用此代码
mysql -u root -p <Database Name> < file.sql

执行此操作时,出现如下错误 第2行的错误1064(42000):您的SQL语法有错误;检查与您的MySQL服务器版本相对应的手册以获取正确的语法,以在第24行的''附近使用

我是这种腻子类型编码的新手,..这是什么问题?

2 个答案:

答案 0 :(得分:2)

这不是Putty问题,这是MySQL错误。您的SQL语法有误。您的查询非常复杂,因此您可能需要简化查询,分别测试子查询并使用在线验证器https://www.google.com/search?q=mysql+validator&oq=mysql+validator对其进行验证。

要进行故障排除,您应该在Putty中打开一个交互式SQL会话,并一次输入1条SQL语句,直到找到错误的行。在这一点上,您将需要准确地排除哪些部分是不正确的SQL。

步骤类似于此:

  

使用Putty SSH进入mysql主机。在主机终端中,输入命令:

$ mysql -u root -p <Database Name>
$ mysql> use Database_name;
$ mysql> <enter more SQL>

答案 1 :(得分:0)

我通过在我的file.sql文件中使用这样的语法解决了该问题

DROP PROCEDURE IF EXISTS `sp_Create_Calendar_Date`;
DELIMITER //
USE `DATABASE_NAME`

CREATE PROCEDURE`sp_Create_Calendar_Date` ()
BEGIN

INSERT INTO CALENDAR_DATE
SELECT..... ; /* Query as it's like in my question */

END
//
DELIMITER ;

在我的服务器中,SQL文件位于我执行的位置,所以我这样称呼我的SQL文件

mysql -u root -p <DATABASE_NAME> < file.sql 

在我的数据库中创建的存储过程。我知道这不是腻子问题