viernes, 2 de marzo de 2018

Importar Bases de Datos Pesadas con phpMyAdmin


En ocasiones nos encontramos frente a la problemática de importar una base de datos MySQL que contiene un gran número de registros. En principio phpMyAdmin viene configurado para importar bases de datos de hasta 2 Mbytes de peso. Si intentamos importar una de mayor tamaño nos mostrará un mensaje de error debido a que estaremos excediendo el máximo tamaño permitido.

Vamos a abordar aquí como podemos cambiar la configuración que trae por defecto la instalación de phpMyAdmin en nuestro localhost, de forma tal que podamos importar bases de datos de gran tamaño.

Modificando la Configuración de PHPMyAdmin


Si estamos trabajando con phpMyAdmin en Localhost, el límite máximo en tamaño permitido para la importación de una base de datos se encuentra establecido en solamente 2 Mbytes. Para modificar ese parámetro, debemos buscar donde se encuentra ubicado el fichero php.ini, y abrirlo en modo de edición.


Primeramente ubiquemos las líneas donde se están establecidos los parámetros: upload_max_filesize    post_max_sizememory_limit.



Según la documentación de la página oficial de PHP, el parámetro post_max_file determina el tamaño máximo permitido en el envío de archivos vía POST, pero además este límite afecta la subida de ficheros, como es el caso que nos preocupa en la importación de la base de datos. 

Debemos establecer post_max_size con un valor mayor que el de upload_max_filesize,  y a su vez memory_limit debe ser mayor que post_max_size.


Una posible configuración que nos permitirá importar bases de datos de hasta 128 Mbytes podría ser la siguiente:

upload_max_filesize=128M
post_max_size=256M
memory_limit=512M

Después de que modificamos estos parámetros debemos reiniciar el servidor Apache antes de intentar importar la base de datos. Sin embargo, en dependencia del tamaño de la base de datos que estemos importando nos puede aparecer un error debido a que el tiempo de la subida del fichero toma mucho tiempo, excediendo el límite establecido:

          Fatal error: Maximum execution time of 300 seconds exceeded ...

Para corregir esto debemos realizar dos pasos, primero incrementar el tiempo máximo de ejecución que está establecido en el fichero php.ini, dándole un valor grande que podría ser por ejemplo:

max_execution_time=3000000


Y segundo, modificar el fichero config.default.php que debemos ubicar dentro de la instalación de nuestro servidor Apache. En XAMPP por ejemplo se encuentra dentro de la carpeta c:\xampp\phpMyAdmin\libraries. Debemos abrir ese archivo para edición y modificar el tiempo límite de ejecución. Originalmente ese parámetro está configurado con un valor 300, si lo establecemos en 0, esto significa que no se establece un límite al tiempo de ejecución:

$cfg['ExecTimeLimit']=0;

Solo restaría reiniciar el servidor Apache en nuestro localhost y deberíamos poder importar la base de datos sin problemas.






Entre las desventajas que tiene este método se encuentran que este proceso de importación puede resultar un poco lento, en dependencia del tamaño de la base de datos.

Además, este método no nos servirá en caso que queramos aplicarlo en un servidor real y no tengamos los privilegios suficientes para cambiar la configuración del servidor Apache. En ese caso debemos recurrir a otra forma de importar bases de datos que que explicaré en otro Post de este blog. Espero les sea de utilidad esta publicación.



No hay comentarios:

Publicar un comentario