3

如果你得到:

Error: SQLSTATE[42000]: Syntax error or access violation: 1104 The SELECT would examine more than MAX_JOIN_SIZE rows; check your WHERE and use SET SQL_BIG_SELECTS=1 or SET MAX_JOIN_SIZE=# if the SELECT is okay

将 cake php 应用程序和数据库从 xampp localhost 上传到远程服务器后。

尝试将蛋糕数据库导入本地计算机上的新数据库并且工作正常。所以我看不到它是导入的信息。

不知道如何解决这个问题。这是一个简单而常见的问题,可以通过以下简单修复。

4

3 回答 3

4

在拉了很多头发之后,在我的好朋友 ten1 在 cakephp IRC 聊天的帮助下,我设法找到了问题/修复。

当这是一个 cakephp 特定问题时,在我的情况下,您需要做不可想象的事情并编辑核心。

您需要编辑的文件是 AclNode.php 位于此处:/lib/Cake/Model/AclNode.php

您需要在第 113 行之前添加一行

112    }
                $db->query('SET SQL_BIG_SELECTS=1'); //Add this line
113             $result = $db->read($this, $queryData, -1);
114             $path = array_values($path);

这通常仅在具有共享主机的服务器上存在问题。

于 2012-12-12T06:24:09.420 回答
3

如果希望它影响整个模型文件或特定模型文件,则可以将 beforeFind 方法添加到 app/models/app_model.php 文件中,而不是编辑核心文件,如下所示:

function beforeFind()   {
    $this->query('SET SQL_BIG_SELECTS=1');
}
于 2013-06-03T07:41:50.550 回答
1

对于 Cakephp 3 以下作品:

    'Datasources' => [
        'default' => [
            'init'   => array(
                PDO::MYSQL_ATTR_INIT_COMMAND => 'SET SESSION SQL_BIG_SELECTS=1',
                ), // Add this to the existing array
于 2017-04-14T05:55:24.023 回答