MySQL MAX_JOIN_SIZE errores
Estoy haciendo esta pregunta en nombre de un pequeño grupo de mis usuarios que tienen este problema.
Una vez que el script que están utilizando llega a la ID 21, genera el siguiente error:
The SELECT examinaría más de MAX_JOIN_SIZE filas; verifique su DÓNDE y use SET SQL_BIG_SELECTS = 1 o SET SQL_MAX_JOIN_SIZE = # si SELECT está bien
He investigado esto lo más posible y he encontrado una respuesta:http: //dev.mysql.com/doc/refman/5.0/en/set-option.htm
El problema es que están en un alojamiento compartido, por lo que no pueden cambiar su configuración de MySQL para corregir los errores.
¿Hay algo que pueda escribir en mi script para que no tengan este problema?
Esta es la función que genera la consulta de la base de datos en función de los módulos que se cargan: $ sql = 'SELECCIONAR a.id como id, a.ddress como dirección';
$query = 'SELECT'
. ' name AS module_name'
. ', databasename AS module_database'
. ', pregmatch AS module_pregmatch'
. ', pregmatch2 AS module_pregmatch2'
. ', html AS module_html'
. ', sqlselect AS database_sqlselect'
. ', sqljoin AS database_sqljoin'
. ', sqlupdatewithvalue AS database_sqlupdatewithvalue'
. ', sqlupdatenovalue AS database_sqlupdatenovalue'
. ' FROM #__aqsgmeta_modules'
. ' WHERE enabled = 1'
. ' ORDER BY id';
$db->setQuery($query);
$results = $db->loadObjectList();
if (count($results) != 0) {
foreach ($results as $result) {
$sqlselect .= ', ';
$sqlselect .= $result->database_sqlselect;
$sqljoin .= ' ';
$result->database_sqljoin = preg_replace('/\{DATABASENAME\}/Ui', $result->module_database, $result->database_sqljoin);
if (!(preg_match("/" . $result->database_sqljoin . "/Ui", $sqljoin)))
$sqljoin .= $result->database_sqljoin;
}
}
if ($use_sh404sef)
$sqlselect .= ', g.oldurl AS sefurl';
$sql .= $sqlselect;
$sql .= ' FROM #__aqsgmeta_address AS a';
$sql .= $sqljoin;
if ($use_sh404sef)
$sql .= ' LEFT JOIN #__redirection AS g ON g.newurl = a.address';
$sql .=
//. ' WHERE a.id IN (' . $cids . ')'
' WHERE a.id = ' . $id
. ' ORDER BY a.address asc,a.id '
;
$db->setQuery($sql);
$rows = $db->loadObjectList();