我使用下面的命令在单独的SQL文件中执行sql命令。
mysql -uuser -ppasswrod host_name SCHMA_NAME -e "set @PACK_NAME=${ownerId};source DELTA_TRUNCATE.sql ;"
DELTA_TRUNCATE.sql文件的竞争是:
SET @PROC_CALL=CONCAT('CALL ',@PACK_NAME||'.TRUNCATE_NORMAL_TABLE(\'IDSADLXQDWDWT\')');
PREPARE PRC_CALL_STMT FROM @PROC_CALL;EXECUTE PRC_CALL_STMT;
DEALLOCATE PREPARE PRC_CALL_STMT;
在作为unix脚本的一部分执行上述命令时,我遇到错误。
第1行的错误1064(42000):您的SQL语法出错; 查看与您的MariaDB服务器版本对应的手册 在''附近使用正确的语法在第1行
如果我按正常命令行执行,它执行正常。但是当作为unix脚本的一部分执行时,它会抛出错误。
答案 0 :(得分:0)
您收到此错误的原因是因为从unix脚本执行时无法评估@PACK_NAME
变量。因此,您需要在SET
调用之前定义它,例如:
@PACK_NAME := 'blah';
或者在执行脚本时将其作为参数传递(使用执行命令),例如:
set @PACK_NAME='${someValue}'