Erreur MySQL - Commandes de synchronisation; vous ne pouvez pas exécuter cette commande maintenant

Je suis de l'utilisation de MySQL avec PHP, Codeigniter. J'avais une question qui a été répondu par bluefeet dans le post ici

J'ai créé une procédure stockée pour la deuxième solution par bluefeet. Il fonctionne parfaitement, cependant, alors que la procédure est appelée dans l'environnement de production, tous les autres utilisateurs reçoivent le message d'erreur

Commandes de synchronisation; vous ne pouvez pas exécuter cette commande maintenant

Pas sûr de savoir comment puis-je surmonter avec cette erreur. J'ai aussi essayé de fermer la connexion après la procédure est appelée, toutefois, les Requêtes des autres utilisateurs sont exécutés avant que la connexion est fermée. Tout le travail autour de ce problème?

Ci-dessous la procédure stockée que j'ai utilisé

DROP PROCEDURE IF EXISTS mailbox.circle_pending_p;
CREATE PROCEDURE mailbox.`circle_pending_p`()
BEGIN
SET @sql = NULL;
SELECT
  GROUP_CONCAT(DISTINCT
    CONCAT(
      'sum(CASE WHEN maildate = ''',
      date_format(mailtime, '%e-%b'),
      ''' THEN 1 else 0 END) AS `',
      date_format(mailtime, '%e-%b'), '`'
    )
  ) INTO @sql
FROM circle_pending_temp
WHERE mailtime >= (select date_sub(max(mailtime), interval 8 DAY)
                   from circle_pending_temp);

SET @sql 
  = CONCAT('SELECT coalesce(email_Circle, ''Grand Total'') Circle,
              max(`< 9 days`) `< 9 days`, ', @sql, ' ,
              count(*) GrandTotal
            from
            (
              select c.email_Circle,
                date_format(c.mailtime, ''%e-%b'') maildate,
                coalesce(o.`< 9 days`, 0) `< 9 days`
              from circle_pending_temp c
              left join
              (
                select email_Circle,
                  count(*) `< 9 days`
                from circle_pending_temp
                where mailtime <= (select date_sub(max(mailtime), interval 8 DAY)
                                    from circle_pending_temp)
              ) o
                on c.email_Circle = o.email_Circle
              where c.mailtime >= (select date_sub(max(mailtime), interval 8 DAY)
                                      from circle_pending_temp)
            ) d
            group by email_Circle with rollup ');

PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END;

Le PHP que j'utilise pour l'appel de cette procédure est

    $db = $this->load->database('mailbox',TRUE);
    $res = $db->query('Call circle_pending_p()');
    echo $db->_error_message();
    $db->close();
    $db = $this->load->database('mailbox',TRUE);
    if ($res->num_rows() > 0) {
        return $res->result_array();
    } else {
        return 0;
    }

OriginalL'auteur Guns | 2013-04-16