我已经进行了大量的谷歌搜索,并阅读了很多不同的堆栈交换帖子。我正在尝试在存储过程中进行一些日志记录。
我已经研究过但尚未取得完全成功:
- mysql stored procedure with INTO OUTFILE
- https://dba.stackexchange.com/questions/27553/mysqldump-error-cant-create-write-to-file
- MySQL how do you append to a file with INTO OUTFILE?
我发现通过使用 [mysqldump]
部分更改 my.cnf,然后我能够使用 INTO OUTFILE
命令写入该文件一次。当我尝试再次运行它时,它会提示,因为该文件已经存在。我还尝试过 TEE 命令,但当我尝试运行它时收到“不受支持的语句”。看起来这个命令是在 MySQL 4.x 中引入的,而我使用的是 MySQL 5.x。
我的最终目标是能够在发现某些条件时通过记录信息来写入文件,该文件可以像跟踪文件一样使用。我真的不在乎它是如何完成的,只要我能做到就行。关于如何完成此任务的任何想法,或者我对 TEE 命令做错了什么?
最佳答案
您可以创建一个临时表,输入每个阶段所需的数据,然后在删除之前选择所有内容。像这样的东西:
DROP PROCEDURE IF EXISTS MY_PROC;
DELIMITER ;;
CREATE PROCEDURE MY_PROC()
BEGIN
DECLARE n INT DEFAULT 0;
DECLARE i INT DEFAULT 0;
DECLARE l_user_id INT DEFAULT 0;
SELECT COUNT(*) FROM users INTO n;
SET i=0;
CREATE temporary TABLE if not exists tmplog (i_value varchar(20), user_id varchar(20)) engine = memory;
WHILE i<n DO
SELECT user_id INTO l_user_id FROM users LIMIT i,1;
INSERT INTO tmplog VALUES(i, l_user_id );
SET i = i + 1;
END WHILE;
SELECT * FROM tmplog;
DROP TABLE tmplog;
End;
;;
DELIMITER ;
CALL MY_PROC();
关于MySQL 从存储过程追加到日志文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33549366/