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スクリプトの一部として実行すると、上記のエラーが発生します。
:
または、例えば、スクリプトの実行中(実行コマンドを使用して)引数として渡す:だから、あなたは
SET
呼び出し、例えば前にそれを定義するいずれかの必要があります未定義? –あなたは正しいです@ダルシャン。以下のようなownerID環境変数には一重引用符を使用する必要があります:mysql -uuser -ppasswrod host_name SCHMA_NAME -e "@PACK_NAME = '$ {ownerId}';ソースDELTA_TRUNCATE.sql; –
正確には、あなたの 'cli'で既に定義されているため、あなたはそのエラーを取得しません。私は将来、この質問を見る人を助けるための答えとしてこれを入れます。 –