如果你得到:
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上传到远程服务器后。
尝试将蛋糕数据库导入本地计算机上的新数据库并且运行正常。所以我看不出它是导入的信息。
不知道如何解决这个问题。这是一个简单而常见的问题,如下所示,易于修复。
答案 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>