1

Drupal 7 を Views と Better Exposed Filters で使用しているため、チェックボックスを使用して分類用語でコンテンツ ノードを検索できます。約 25 個のコンテンツと 10 個の分類用語チェックボックスしかありません。すべてのチェックボックスをオンにすると、次のエラーが表示されます (ビュー プレビューでのみ確認できます)。

SQLSTATE[42000]: 構文エラーまたはアクセス違反: 1104 SELECT は MAX_JOIN_SIZE を超える行を調べます。WHERE を確認し、SELECT が問題ない場合は SET SQL_BIG_SELECTS=1 または SET MAX_JOIN_SIZE=# を使用します

これに対処するために次のコードを使用することを提案するアドバイスを見つけました。

mysql_query("set sql_big_selects=1");
  1. これが正しいアプローチである場合、このコードはどこで使用する必要がありますか?
  2. このアプローチは、不適切に記述されたクエリに対処していますか?もしそうなら、解決策はありますか?

ご協力いただきありがとうございます。

4

2 に答える 2

1

この問題は Drupal.org here で取り上げられました。要点は、何らかの理由でsql_big_selectsホスティングに設定されて0いるため、管理者/サポートに連絡してこの設定を変更する必要があります。

于 2012-12-09T14:11:05.243 に答える
0

解決策を見つけました。それが長期的に正しいものであるかどうか、私は興味があります。

構成ファイルを見つけるために、サイト全体を 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',
      ),
    ),
  ),
);
于 2012-12-09T17:21:53.493 に答える