【问题标题】:Drupal 7 Views with BEF MAX_JOIN_SIZE Error带有 BEF MAX_JOIN_SIZE 错误的 Drupal 7 视图
【发布时间】:2012-12-07 19:25:14
【问题描述】:

我正在使用带有 Views 和 Better Exposed Filters 的 Drupal 7,因此我可以使用带有复选框的分类术语搜索内容节点。我只有大约 25 条内容和 10 个分类术语复选框。当我选中所有框时,我收到了这个错误(我只能在视图预览中看到):

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. 这种方法是否可以解决写得不好的查询?如果是,有解决方案吗?

感谢您的帮助。

【问题讨论】:

    标签: php drupal-7 drupal-views


    【解决方案1】:

    这个问题出现在 Drupal.org here。要点是 sql_big_selects 在您的主机上设置为 0 是有原因的,因此您应该联系您的管理员/支持人员来更改此设置。

    【讨论】:

      【解决方案2】:

      我想出了一个解决办法;我很好奇这是否是正确的长期。

      我对整个站点进行了 grep 操作以查找配置文件。我找到了sites/default/settings.php。它相当擅长描述如何使用它。此文件存在安全问题,因此它的默认权限设置为完全排除写入权限。我使用 chmod 466 将其设置为编辑,然后使用 chmod 444 将其设置回来。不要忘记这样做。

      我找到了未注释的代码并添加了将 SQL_BIG_SELECTS 设置为 1 的最后一个数组元素。仍然想知道 Better Exposed Filters 生成的 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',
            ),
          ),
        ),
      );
      

      【讨论】:

      • 我在共享主机环境中。我认为我无法更改整体数据库参数,也无法启动或关闭实例。
      猜你喜欢
      • 2010-11-01
      • 1970-01-01
      • 2012-06-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-11
      相关资源
      最近更新 更多