phpMyAdmin
 sql >> база данни >  >> Database Tools >> phpMyAdmin

MySQL Error 2014 - Команди не са синхронизирани - когато се опитвате да извикате последователни съхранени процеси

Предполагам, че това може да има нещо общо с начина, по който присвоявате своите променливи.

Моят съвет е да декларирате локални променливи във вашата процедура и да ги присвоите с помощта на SELECT...INTO . Това като цяло е добра практика и може да ви помогне с проблема ви.

Ето как би изглеждала вашата процедура:

DELIMITER $$

DROP PROCEDURE IF EXISTS deleteOrg $$

CREATE PROCEDURE deleteOrg(IN IN_ID INT)

MODIFIES SQL DATA

BEGIN 
  DECLARE V_ORG_ID INT;
  DECLARE V_MY_LEFT INT;
  DECLARE V_MY_RIGHT INT;
  DECLARE V_MY_WIDTH INT;

    START TRANSACTION;

    SELECT id, 
           lft, 
           rgt, 
           rgt - lft + 1
      into V_ORG_ID, 
           V_MY_LEFT, 
           V_MY_RIGHT,  
           V_MY_WIDTH
      FROM organization 
     WHERE id = IN_ID;

    -- delete statements for removing roles and other dependencies

    DELETE FROM organization 
     WHERE id = V_ORG_ID;

    UPDATE organization 
       SET rgt = rgt - V_MY_WIDTH 
     WHERE rgt > V_MY_RIGHT;

    UPDATE organization 
       SET lft = lft - V_MY_WIDTH 
     WHERE lft > V_MY_LEFT;

COMMIT;

END;
$$

DELIMITER ;


  1. DBeaver
  2.   
  3. phpMyAdmin
  4.   
  5. Navicat
  6.   
  7. SSMS
  8.   
  9. MySQL Workbench
  10.   
  11. SQLyog
  1. Досадно предупреждение в phpmyadmin

  2. #1146 - Таблица 'phpmyadmin.pma__tracking' не съществува

  3. проблем при свързването с MySql DB (PHP)

  4. SQL заявка връща грешни резултати

  5. MySql phpMyAdmin:Автоматично репликиране/синхронизиране на две бази данни