我偶尔会遇到 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/