3

MySQL のイベント スケジューラを使用して自動バックアップを作成しようとしています。

これが私のスクリプトです:

CREATE DEFINER=`root`@`localhost` EVENT `Backup` 
ON SCHEDULE EVERY 1 WEEK 
STARTS '2013-06-14 18:19:02' ON COMPLETION NOT PRESERVE ENABLE 
DO 
SET @sql_text = CONCAT ( "SELECT * FROM BonInterne INTO OUTFILE '/home/aimad/GestionStock/" , DATE_FORMAT( NOW(), '%Y%m%d') , "BonInterne.csv'" ); 
PREPARE s1 FROM @sql_text; 
EXECUTE s1; 
DROP PREPARE s1;

実行すると、次の行にエラーが表示されますPREPARE s1 FROM @sql_text

SQL 構文にエラーがあります。1行目の「NULL」付近で使用する正しい構文については、MySQLサーバーのバージョンに対応するマニュアルを確認してください

私のスクリプトの問題は何ですか?

4

1 に答える 1

2

との間に複数のステートメントを入れる必要がBEGINありENDます。また、区切り文字を変更する必要があります。そうしないと、MySQL はイベント作成ステートメントが最初の;. そして最後に、それDEALLOCATE PREPARE ...は ではなくDROP PREPARE...です。

DELIMITER $$
CREATE DEFINER=`root`@`localhost` EVENT `Backup` 
ON SCHEDULE EVERY 1 WEEK 
STARTS '2013-06-14 18:19:02' ON COMPLETION NOT PRESERVE ENABLE 
DO 
BEGIN
SET @sql_text = CONCAT("SELECT * FROM BonInterne INTO OUTFILE '/home/aimad/GestionStock/" , DATE_FORMAT( NOW(), '%Y%m%d') , "BonInterne.csv'" ); 
PREPARE s1 FROM @sql_text; 
EXECUTE s1; 
DEALLOCATE PREPARE s1;
END $$
DELIMITER ;
于 2013-06-14T20:08:05.757 に答える