php - CakePHP 3.0 : SQLSTATE[HY000]: General error: 1 too many SQL variables

标签 php cakephp cakephp-3.0

我偶尔会遇到 CakePHP 3.1.3 的问题,显示此错误 SQLSTATE[HY000]:一般错误:1 太多 SQL 变量。当它来来去去时,我很难重新制作它。我已附上此错误的图像。

CakePHP 3.0 - SQLSTATE[HY000]: General error: 1 too many SQL variables

我发现,通常我会在下面提供的代码中遇到错误。下面的代码将根据多个复选框选择获取多个 id。之后,它根据所选的 id 删除该学生。我要问的问题是我收到的错误是否是由我的代码引起的,还是由于我看到有人在此链接中发布了类似问题的 Debugkit(https://github.com/cakephp/cakephp/issues/7373)。如果是Debugkit引起的,如何快速解决?

$deleteList = $this->request->data['selected'];

$classids = $studentclassTable->find()
->select(['classroom_id'=>'Studentclassrooms.classroom_id'])
->where(['student_id IN' => $deleteList])
->hydrate(false)
->toArray();     


foreach($deleteList as $id) {
    $student =  $this->Students->findById($id)->first();                        
    if($student){
        array_push($usernames, $student['firstname'].' '.$student['lastname']);
        $this->Students->delete($student);
    }
}

最佳答案

如果仔细观察堆栈跟踪,您应该会发现这源于 Debug Kit,它是清理请求历史记录的垃圾收集机制。

查看查询,您的调试工具包版本似乎不是最新的,最新版本将使用 NOT IN 条件(自 3.1.7 起),默认情况下只有最大保留 20 行,因此将在查询中设置相同数量的占位符。

参见https://github.com/cakephp/debug_kit/pull/381

要保留的最大行数可以通过全局 DebugKit.requestCount 配置选项进行配置。

长话短说,更新您的调试工具包依赖项。

关于php - CakePHP 3.0 : SQLSTATE[HY000]: General error: 1 too many SQL variables,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33950087/

相关文章:

php - CakePHP 3 :Router error, htaccess 自动重定向 webroot/admin/

javascript - 获取 PHP 变量的 slider 值

PHP flush() 显然可以在我的 Linux 机器上运行,但不能在我的 Windows 机器上运行?

php - 用 PHP 学习 OO

php - 我的架构与我的数据库不同

mysql - cakephp 连接远程 MySql

php - Cakephp 3 如何使用TestSuite 来测试更新查询?

apache - 从 http 基本身份验证中排除特定的 cakephp Controller

php - 从包含空值的数组中获取最小值

php - 在这个图像像素循环中我做错了什么?