0

こんなイベントがあります

CREATE DEFINER=`frontend`@`%` EVENT `general_log_event` 
ON SCHEDULE EVERY 5 MINUTE STARTS '2013-03-05 16:08:54' DO BEGIN

    SET @query = CONCAT("
    SELECT * INTO OUTFILE '/Users/Admin/logs/log_", 
    DATE_FORMAT(NOW(),"%M-%d-%y_%h-%m-%s"), ".csv'",
    " 
    FIELDS TERMINATED BY ','
    ENCLOSED BY '\"\'",
    "LINES TERMINATED BY '\\n\'",
    "FROM mysql.general_log;");
    PREPARE statement FROM @query;
    EXECUTE statement; 
END

しかし、実行するたびにこのエラーが発生します

[ERROR] Event Scheduler: [root@%][ge.general_log] File '/Users/Admin/logs/log_03-05-13_04-03-54.csv' already exists

毎回同じ正確なエラーです。毎回変更する必要がある同じファイルを持つべきではありません。

4

1 に答える 1

0

FLOOR(1052 + RAND() * 3564)ランダムな値を作成するために使用され、機能しているようです。これが最後のピースです。

SET @query = CONCAT("
SELECT SQL_NO_CACHE * INTO OUTFILE '/Users/Admin/logs/General_Log/log_", 
DATE_FORMAT(NOW(),"%M-%d-%y_%h-%m-%s_"), FLOOR(1052 + RAND() * 3564), ".csv'",
" 
FIELDS TERMINATED BY ','
ENCLOSED BY '\"\'",
"LINES TERMINATED BY '\\n\'",
"FROM mysql.general_log;");
PREPARE statement FROM @query;
EXECUTE statement;

SELECT @query;
于 2013-03-08T17:20:24.723 に答える