Je rencontre un problème lors de l'appel d'une procédure stockée à partir d'une application Laravel 5.3. Le script de la page échoue avec les éléments journaux suivants sont générés dans le fichier journal apache:L'appel de la procédure stockée à partir de l'application Laravel 5.3 entraîne une exception PDO non interceptée
- PHP Erreur fatale: taille maximale autorisée pour la mémoire de 134217728 octets épuisé (a essayé d'allouer 842018128 octets)
- Uncaught PDOException: SQLSTATE [ HY000]: Erreur générale: 2014 Impossible d'exécuter des requêtes pendant que d'autres requêtes sans tampon sont actives
J'ai essayé de remédier en augmentant la limite de mémoire dans le fichier php.ini en vain.
Les erreurs sont générées à cette déclaration:
$pages = DB::select('call sp_get_pages_for_audio_section(1133)');
Ma procédure stockée est la suivante:
CREATE PROCEDURE `sp_get_pages_for_audio_section`(IN topic_id INT UNSIGNED)
BEGIN
SET @id = topic_id;
SELECT p.id, p.title, p.page_order, p.include_audio, a.filename,
a.body, a.directions, a.media_type, a.id as asset_id,
a.play_blank_mp3, a.cc_file, a.cc_swf, plt.title AS plt_title,
l.id as lesson_id,
CASE p.page_layout_template
WHEN 0 THEN FALSE
ELSE TRUE
END
AS has_plt,
IF ((a.filename IS NOT NULL AND length(a.filename) > 0), 1, 0)
AS audio_asset_fulfilled,
IF ((a.filename IS NULL OR a.filename = '') AND (length(a.body) > 0 OR length(a.directions) > 0), 1, 0)
AS audio_asset_unfulfilled
FROM pages p
LEFT JOIN page_layout_templates plt
ON plt.id = p.page_layout_template
LEFT JOIN assets a
ON a.page_id = p.id
AND a.asset_type = 'audio'
INNER JOIN topics t
on t.id = p.parent_topic_id
INNER JOIN lessons l
on t.parent_lesson_id = l.id
WHERE p.parent_topic_id = @id
ORDER BY page_order ASC;
END
J'isolé l'appel de l'instruction,
$pages = DB::select('call sp_get_pages_for_audio_section(1133)');
à une fonction par lui-même avec les mêmes résultats.
Merci pour toute aide!