2017-02-10 20 views
0

从Laravel 5.3应用程序中调用存储过程时遇到问题。从Laravel 5.3应用程序调用存储过程导致'未捕获的PDO异常'

  1. PHP致命错误:页面脚本与Apache日志文件中生成以下日志项未能用尽134217728个字节允许内存大小(试图分配842018128个字节)
  2. 未捕获PDOException:SQLSTATE [ HY000]:一般错误:2014无法执行查询,而其他无缓冲查询活跃

我试图通过增加php.ini文件内的内存限制无济于事。在这一声明产生

的错误:

$pages = DB::select('call sp_get_pages_for_audio_section(1133)'); 

我的存储过程如下:

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 

我孤立的声明呼吁,

$pages = DB::select('call sp_get_pages_for_audio_section(1133)'); 

的功能通过本身具有相同的结果。

感谢您的帮助!

回答

0

在下面两行把固定的问题:

$pdo = DB::connection()->getPdo(); 
$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, true); 
相关问题