Я работаю с Aurora / MySQL. У меня есть курсор, который никогда не кажется законченным / завершенным.
Что меня действительно смущает, так это примеры, которые я видел в Интернете, я никогда не видел, чтобы они устанавливали переменную «done» или «finish» в единицу. Ниже мой сценарий.
DELIMITER $$
DROP PROCEDURE IF EXISTS mass_backup $$
CREATE PROCEDURE mass_backup ()
BEGIN
DECLARE copy_table VARCHAR(255);
DECLARE done BOOLEAN DEFAULT 0;
DECLARE table_cursor CURSOR FOR
SELECT table_name FROM information_schema.tables WHERE table_schema='app_prod_schema';
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done=1;
OPEN table_cursor;
REPEAT
FETCH table_cursor INTO copy_table;
SELECT copy_table;
SET @var1 = copy_table;
SET @copySql = CONCAT('SELECT * FROM ',@var1,' INTO OUTFILE S3 ''''s3://somebucket.com-work-bucket/''', @var1 ,
'.csv', 'FIELDS TERMINATED BY '','' LINES TERMINATED BY ''\n''' );
SELECT @copySql;
UNTIL done END REPEAT;
CLOSE table_cursor;
END $$
DELIMITER ;
CALL mass_backup()
С какой стати этот курсор хочет работать вечно? Любая помощь с благодарностью.