在远程服务器上运行cakephp app时遇到问题

时间:2012-12-11 23:56:27

标签: mysql cakephp-2.0

如果你得到:

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 app和数据库从xampp localhost上传到远程服务器后。

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

不知道如何解决这个问题。这是一个简单而常见的问题,如下所示,易于修复。

3 个答案:

答案 0 :(得分:4)

经过多次拔毛后,我在cakephp IRC聊天的朋友ten1的帮助下找到了问题/修复。

当这是一个特定于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);

这通常只是具有共享托管服务器的问题。

答案 1 :(得分:3)

您可以在app / models / app_model.php文件中添加一个beforeFind方法,而不是编辑核心文件,如果希望它影响到您的特定模型文件,请执行以下操作:

function beforeFind()   {
    $this->query('SET SQL_BIG_SELECTS=1');
}

答案 2 :(得分:1)

<pre>
 For Cakephp 3 following works:

'Datasources' => [
    'default' => [
        'init'   => array(
            PDO::MYSQL_ATTR_INIT_COMMAND => 'SET SESSION SQL_BIG_SELECTS=1',
            ), // Add this to the existing array

</pre>