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

问题描述 投票:-1回答:2

我的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行ERROR 1064(42000):您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以便在第24行附近使用正确的语法

我是这个腻子型编码的新手......,这里有什么问题?

mysql mysql-error-1064
2个回答
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>

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 

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

© www.soinside.com 2019 - 2024. All rights reserved.