Kleine Stolpersteine: Fehlermeldung wegen MAX_JOIN_SIZE rows

Breite Inhalt
12/12
Breite Layout-Container
Ganze Breite
Spalten Inhalt
12/12

Kleine Stolpersteine: Fehlermeldung wegen MAX_JOIN_SIZE rows

Wenn man - wie es bei Hosting-Paketen- in der Regel der Fall ist - die Datenbank nicht selbst konfigurieren kann, dann kann man relativ schnell in diese Fehlermeldung  laufen.

   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

Im Netz kursieren verschiedene Vorschläge, wie man in den Drupal-Scripten die entsprechende Datenbank-SystemVariable 'sql big selects'  auf ON setzen kann.

Die Vorschläge sehen in der Regel vor, daß man die Core-Datei mit den Datenbankfunktionen überschreiben soll.

Das ist aber keine gute Idee, weil diese Änderung bei jedem künftigen Versions-Upgrade verloren geht.

Besser ist folgender Vorschlag, den wir inzwischen bei allen größeren Projekten einsetzen:

Man ruft die Datei settings.php auf (vorher Schreibschutz entfernen) und sucht dort die Einstellungen für den Datenbank-Connect:

   $databases = array (   'default' =>   array (   'default' =>   array (     'database' => 'name_der_datenbank',    'username' => 'name_des_datenbank_users',    'password' => 'datenbank_passwort',    'host' => 'localhost',    'port' => '',    'driver' => 'mysql',    'prefix' => '',  ), );

Die Anweisung ergänzt man, so daß nun folgender Code dort steht:

   $databases = array (   'default' =>   array (   'default' =>   array (     'database' => 'name_der_datenbank',    'username' => 'name_des_datenbank_users',    'password' => 'datenbank_passwort',    'host' => 'localhost',    'port' => '',    'driver' => 'mysql',    'prefix' => '',    'init_commands' => array(       'big_selects' => 'SET SQL_BIG_SELECTS=1',     ),    ),  ), );

Natürlich können auf dem Weg auch andere MySQL Variablen gesetzt werden.
Wer sich in das Thema vertiefen möchte, findet in der API Details dazu:

https://api.drupal.org/api/drupal/includes!database!mysql!database.inc/…