2017-06-28 9 views
0

以下のコマンドを使用して、別のSQLファイルでSQLコマンドを実行しています。MariaDBサーバーのバージョンで、近くの '1'に近い文字列を使用する

mysql -uuser -ppasswrod host_name SCHMA_NAME -e "set @PACK_NAME=${ownerId};source DELTA_TRUNCATE.sql ;" 

DELTA_TRUNCATE.sqlファイルCONTENSです:

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スクリプトの一部として、上記のコマンドの実行中。

ERROR 1064(42000)at line 1:SQL構文に誤りがあります。私はそれがうまく実行されますように、通常のコマンドラインを実行した場合のライン1

で「」の近くに使用する 右の構文については、あなたのMariaDBサーバーのバージョンに対応するマニュアルを確認してください 。しかし、UNIXスクリプトの一部として実行すると、上記のエラーが発生します。

+0

@PACK_NAME := 'blah'; 

または、例えば、スクリプトの実行中(実行コマンドを使用して)引数として渡す:だから、あなたはSET呼び出し、例えば前にそれを定義するいずれかの必要があります未定義? –

+0

あなたは正しいです@ダルシャン。以下のようなownerID環境変数には一重引用符を使用する必要があります:mysql -uuser -ppasswrod host_name SCHMA_NAME -e "@PACK_NAME = '$ {ownerId}';ソースDELTA_TRUNCATE.sql; –

+0

正確には、あなたの 'cli'で既に定義されているため、あなたはそのエラーを取得しません。私は将来、この質問を見る人を助けるための答えとしてこれを入れます。 –

答えて

0

UNIXスクリプトから実行中に@PACK_NAME変数を評価できないためです。多分 `@のPACK_NAME`がある

set @PACK_NAME='${someValue}' 
関連する問題