Drupal 7视图与BEF MAX_JOIN_SIZE错误

时间:2012-12-07 19:25:15

标签: php drupal-7 drupal-views

我正在使用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");
  1. 如果这是正确的方法,那么应该在何处使用此代码?
  2. 这种方法是否解决了编写不良的查询,如果有,是否有解决方案?
  3. 感谢您的帮助。

2 个答案:

答案 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',
      ),
    ),
  ),
);