我的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行附近使用正确的语法
我是这个腻子型编码的新手......,这里有什么问题?
这不是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>
我在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问题