SQLSTATE[HY000]: General error: 2014 Cannot execute queries while other unbuffered queries are active. Consider using PDOStatement::fetchAll(). Alternatively, if your code is only ever going to run against mysql, you may enable query buffering by setting the PDO::MYSQL_ATTR_USE_BUFFERED_QUERY attribute.
$sql = 'SHOW COLUMNS FROM ' . $tableName;
// 调试开始
$this->debug(true);
$pdo = $this->linkID->query($sql);
// 调试结束
$this->debug(false, $sql);
$result = $pdo->fetchAll(PDO::FETCH_ASSOC);在本地测试良好,放到阿里服务器上就出现错误提示。找过度娘,问过谷歌。找到的答案如下1.寻找服务器商帮你解决
2.php 官网给出的是设置pdo属性
3.Thinkphp网站答案
'params' => [
\PDO::ATTR_PERSISTENT => true,
\PDO::ATTR_CASE => \PDO::CASE_LOWER,
],以上的方法都试过,还是不行。最后只能去翻Thinkphp5.0的最底层文件 Connection.php,关于'param'属性设置// PDO连接参数
protected $params = [
PDO::ATTR_CASE => PDO::CASE_NATURAL,
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_ORACLE_NULLS => PDO::NULL_NATURAL,
PDO::ATTR_STRINGIFY_FETCHES => false,
PDO::ATTR_EMULATE_PREPARES => false,
];在不断尝试修改这里的属性,然后放到服务器上去测试,查看结果。找到了最终的答案。最终问题就是在这个部分。在操作的时候不建议去修改Thinkphp5.0的最底层文件。所以我它放到配置文件 app/databa
正确代码
'params' => [
PDO::ATTR_CASE => PDO::CASE_LOWER,
PDO::ATTR_EMULATE_PREPARES => true,
],以上问题才搞定最佳答案