【问题标题】:PDO - SQLServer change maximum data limitPDO - SQL Server 更改最大数据限制
【发布时间】:2021-02-18 05:34:07
【问题描述】:

我有 Windows Server + MSSQL2017 + php7.3.13 + PDO(pdo_sqlsrv 和 sqlsrv)

PHPInfo: memory_limit=16M  /  both buffer_max_kb_size=10240 

如果我从 DB 获得的数据少于 600kb,则此代码可以正常工作。 如果我想获得更多字符串,我将一无所获。没有错误。快速执行和白屏。 我已经看到一些增加 buffer_max_kb-params 的建议,但在我的 phpinfo 中,我看到它们设置为 10M。 我的最大数据大小是 2M(为了测量数据大小,我在 MSSM 中执行查询并将结果保存到文本中) 所以必须有另一种选择,但它是什么?什么都找不到(

代码:

try{

    $conn = new PDO( "sqlsrv:Server= $host ; Database = $db ", $user, $pwd);
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    $sql = "select * from tabl";
    $stmt = $conn->query($sql);
    return $stmt->fetchAll(PDO::FETCH_NAMED);
    }
catch(Exception $e){
    die(print_r($e));
}

【问题讨论】:

  • 一个可能的configuration
  • 如果使用 SQLSRV_CURSOR_BUFFERED 那么我必须增加一点 buffer_max_kb 。否则会出现错误“缓冲查询的内存限制超过 10240 KB”。但也没有任何回报。甚至打印 $stmt->rowCount();不起作用。

标签: php sql-server pdo sqlsrv


【解决方案1】:

我的错误是我测量了文本中的数据,并确定它是一个小体积。但是使用 SQLSRV_CURSOR_BUFFERED 帮助我发现数据大小要大得多。 最后我使用了 ini_set('memory_limit', '256M') 并且它起作用了。

但这无法理解——2M的数据怎么需要最少200M的内存?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-06-20
    • 2011-12-21
    • 2022-06-13
    • 2014-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多