我的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行的''附近使用
我是这种腻子类型编码的新手,..这是什么问题?
答案 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
在我的数据库中创建的存储过程。我知道这不是腻子问题