Я пытался запустить хранимую процедуру MYSQL, чтобы завершить сеанс в конце бизнес-процесса, но я получил ошибку - PullRequest
0 голосов
/ 01 апреля 2020
@delimiter ++;
CREATE PROCEDURE IC_P_SessionWait()
BEGIN
DECLARE n INT DEFAULT 0;
DECLARE i INT DEFAULT 0;
DECLARE sid varchar(254);

  DELETE from  appianData.IC_SessionWait;

  INSERT INTO appianData.IC_SessionWait 
  SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST where USER='appian' and DB = 'appianData' and COMMAND = 'Query' and  HOST LIKE 'vlapnpr001%';

  SET i=0;

  SELECT COUNT(*) FROM appianData.IC_SessionWait INTO n;

  WHILE i<n DO 
  SELECT ID into sid from appianData.IC_SessionWait LIMIT i,1;

        SET @sessionId :=sid;
        SET @sql:=CONCAT('Kill ',@sessionId);

       PREPARE dynamic_statement FROM @sql;
       EXECUTE dynamic_statement;
       DEALLOCATE PREPARE dynamic_statement;

  SET i = i + 1;
  END WHILE;

END; ++
@delimiter ;++

Я получаю сообщение об ошибке:

Ошибка канала связи во время отката (). Разрешение транзакции неизвестно.

В основном я вставляю указанный процесс c в таблицу IC_SessionWait и выполняю L oop, и уничтожаю их с помощью Dynami c Sql. Но это не сработает ...

The error is ' 'Communications link failure during rollback(). Transaction resolution unknown.'' 

Может кто-нибудь дать мне подсказку?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...