我正在使用Drupal 7 with Views和Better Exposed Filters,因此我可以使用复选框搜索带分类术语的内容节点。我只有大约25个内容和10个分类术语复选框。当我检查所有框时,我收到此错误(我只能在Views Preview中看到):
SQLSTATE [42000]:语法错误或访问冲突:1104 SELECT将检查多于MAX_JOIN_SIZE行;检查你的WHERE并使用SET SQL_BIG_SELECTS = 1或SET MAX_JOIN_SIZE =#如果SELECT没问题
我找到了一些建议,建议使用以下代码来解决这个问题:
mysql_query("set sql_big_selects=1");
感谢您的帮助。
答案 0 :(得分:1)
这个问题出现在Drupal.org here上。要点是sql_big_selects
在您的托管中设置0
是有原因的,因此您应该与管理员/支持人员联系以更改此设置。
答案 1 :(得分:0)
我想出了一个解决方案;我很好奇,如果这是正确的长期。
我在整个网站上查找配置文件。我找到了sites / default / settings.php。它在描述如何使用它时相当不错。存在与此文件相关的安全问题,因此它将默认权限设置为完全排除写入权限。我使用chmod 466将其设置为编辑,然后使用chmod 444将其设置回来。别忘了这样做。
我找到了未注释的代码,并添加了最后一个将SQL_BIG_SELECTS设置为1的数组元素。仍然想知道更好的暴露过滤器生成的SQL代码是不是很糟糕。在任何情况下,这都修复了错误。
$databases = array (
'default' =>
array (
'default' =>
array (
'database' => 'name_one',
'username' => 'name_two',
'password' => 'not_telling_you',
'host' => 'localhost',
'port' => '',
'driver' => 'mysql',
'prefix' => '',
'init_commands' => array(
'big_selects' => 'SET SQL_BIG_SELECTS=1',
),
),
),
);