permisos para tablas temporales

Los siguientes errores aparecían en el sitio:

 

User warning: Table 'prod_db.temp_faceted_search_results_1' doesn't exist query: SELECT COUNT(*) FROM temp_faceted_search_results_1 in _db_query() (line 148 of /var/www/prod/includes/data                          
User warning: Access denied for user 'username'@'localhost' to database 'prod_db' query: CREATE TEMPORARY TABLE temp_faceted_search_results_1 (nid int unsigned NOT NULL, PRIMARY KEY

 

Otro problema documentado en el sitio de drupal: db_query_temporary() will fail without the "CREATE TEMPORARY TABLES" with MySQL, documentation update is needed

 

El problema radica en la API de trabajo con la base de datos le ofrece a los desarrolladores la función  db_query_temporary(). Esta función explicítamente crea una tabla temporal. Pero cuando utilizamos MySQL, si el permiso de  "CREATE TEMPORARY TABLES"  no fue otorgado al usuario, la función falla. Como esta función no se utiliza en el core de Drupal, este permiso no se otorga de manera predeterminada. Para solucionar esto, debemos ejecutar la linea de código para otorgar permisos al usuario en la base de datos de la siguiente manera.

 

En vez de la original que sería algo asi:

GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER ON databasename.*

 

Debemos ejecutar una línea similar a la siguiente:

GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, CREATE TEMPORARY TABLES ON databasename.* TO 'username'@'localhost' IDENTIFIED BY 'password';

FLUSH PRIVILEGES;

 

(El flush privileges es para hacer que el servidor de mysql aplique el cambio realizado).