Mostrando entradas con la etiqueta MySQL. Mostrar todas las entradas
Mostrando entradas con la etiqueta MySQL. Mostrar todas las entradas

lunes, 24 de septiembre de 2018

Importar ficheros de gran tamaño en MySQL

Una consulta recurrente de algunos compañeros es referente a los problemas de importación de bases de datos en entornos MySQL, en especial con el uso de MySQL Workbench. Aunque debo reconocer que Workbench me encanta por su simplicidad, comodidad de uso y diseño, los archivos pesados, y con esto, al menos en mi caso, me refiero a un par de gigas de BBDD, se le atragantan.


Vamos a ver unos cuantos métodos para realizar esta importación de bases de datos.

1º El método tradicional: importar datos.

Desde MySQL, vamos a "server", y seleccionamos "Data import". En la pantalla que aparecerá, seleccionamos "Import from Self-Contained File", y le indicamos dónde está el archivo que queremos importar.


Es MUY importante marcar el "Default Target Schema" al que debe importarse el script, porque no siempre el script apunta sobre dónde se deben ejecutar los cambios, así que es mejor indicarlo, adicionalmente, de forma manual. Mejor prevenir que curar.

2º Método secundario: abrir el script y ejecutarlo a mano.

Desde Workbench, vamos a "File", y "Open SQL Script". Una vez abierto, lo ejecutamos, desde el símbolo del rayo.
Este sistema tiene la ventaja sobre el anterior que si falla, vas a ver exactamente en qué punto, algunas veces fallando al inicio, de manera que tienes la seguridad de que no se ha modificado nada. Desde el método de importación, si se bloquea por tamaño, no sabes exactamente en qué punto, y si debes detener el proceso, paso irremediable muchas veces, dejarás la BBDD inestable, debiendo recurrir a backup para restaurarla.

3º Línea de comandos: lo más fiable.

Abriremos una consola y conectamos con MySQL, y directamente, con la BBDD que nos interese. Para ello, ejecutamos mysql, con los parámetros -u y la BBD.
Ejemplo: mysql -u <username> -p <database>
Pongamos que utilizamos el usuario root y la BBDD "miBBDD", por poner un ejemplo. Entonces, escribiríamos lo siguiente: ysql -u root -p MiBBDD
Seguidamente, pedirá poner el password del usuario root. Lo escribimos y pulsamos Enter.
El prompt de la consola cambiará a MySQL.

Lo siguiente sería ejecutar la BBDD a importar. Supongamos que es el archivo "backup.sql", y lo hemos alojado en C:, por comodidad. Pues pondríamos el siguiente comando:"source C:/backup.sql"
(Siempre es preferible dar la ruta completa del archivo a importar).

Con esto, se habrá realizado la importación sin mayores problemas

lunes, 28 de noviembre de 2016

Solventar error 1067 en MySQL

Este error es bastante común en MySQL, asi que aquí va un pequeño post cubriendo las distintas soluciones a aplicar. Porque el error es el mismo, pero las causas difieren.


Siempre comienza con que no podemos acceder a la BBDD de SQL, bien con un HeidiSQL o el Workbench (mi preferido). La razón es que la BBDD no ha iniciado, y esto sucede porque el servicio MySQL no ha arrancado. Cuando intentamos arrancarlo nos encontramos con el siguiente error:
No se puede iniciar el servicio MySQL en Equipo local.

Error 1067: El proceso ha terminado de forma inesperada
.
Vamos a desglosar causas y soluciones:

- Tras la instalacion hemos movido la BBDD a otra ubicación

Es de suponer que hemos modificado la ruta de la nueva BBDD en el archivo My.ini, ubicado normalmente en c:/ProgramData/MySQL/MySQL Server 5.6 (este ultimo punto del path varia segun la version de MySQL que utiliceis, logicamente).



También en este punto es importante tratar de poner la nueva ruta sin espacios. A veces no toma bien la ruta con espacios.
Eliminamos tambien los archivos ib_logfile0 e ib_logfile1 ubicados en la misma carpeta que my.ini. (por si acaso, haz copia de los ficheros de datos antes. No suele pasar nada, pero, por si pasa...). Tras eliminar los ficheros, reinicia el servicio. Ya deberia ir correctamente.

- Da el error, y hemos realizado la instalacion básica. No hemos tocado absolutamente nada.

Por defecto, Al instalar MySQL se crea el servicio MySQL con la cuenta de "servicios de red" del sistema (network services). Suele ser un problema de permisos sobre la carpeta de la BBDD y la cuenta de servicio asociada. Prueba a dar permisos de lectura y escritura a servicios de red en la ubicacion de la BBDD. Y reinicia el servicio, claro. Si sigue sin ir, crea una cuenta de administrador local en la maquina, y asignas esa cuenta al servicio.


Si a estas alturas el error no está solventado, solo queda una posible causa.

- Los recursos del sistema son escasos.

Esto no suele ser una causa habitual, porque por defecto las instalaciones de MySQL traen en el archivo my.ini una cantidad de memoria asignada para la BBDD de chiste. Para mejorar el rendimiento, normalmente se efectua un ajuste que en las instrucciones indica debe ser de al menos el 80% de la memoria de la maquina. Yo prefiero ajustarlo al 50%, pero son preferencias.


Si esta cifra se ha ajustado y luego se han reducido las características de hardware de la máquina (vamos, lo normal si estamos jugando con VM´s), podemos encontrarnos que los recursos que queremos asignar para la BBDD superan lo que el sistema puede dar al programa. Y entonces, sale el error 1067 igualmente. Lo ajustamos como procede, e iniciamos de nuevo el servicio.

Si no funciona ninguna de estas soluciones, ve desinstalando y limpiando todo rastro de MySQL en ese equipo, incluido el registro, y reinstalando.

¿Dudas? Deja un comentario, lo mismo puedo ayudar en algo...