Importar archivos SQL grandes phpmyadmin


12

Estoy tratando de importar este archivo SQL en phpmyadmin y recibí este mensaje

#1064 - You have an error in your SQL syntax; 
check the manual that corresponds to your MySQL server version 
for the right syntax to use near 
'<br /> <b>Fatal error</b>: Allowed memory size of 134217728 bytes exhausted (tr' at line 1

¿Qué hago para hacer esta importación?

Respuestas:


12

Suponiendo que no puede aumentar aún más el tamaño de la memoria, hay un par de opciones.

  • Si no está familiarizado con la línea de comandos y realmente desea seguir con una importación de estilo GUI, puede usar BigDump ( http://www.ozerov.de/bigdump/ ). Lo usé una vez pero ha pasado un tiempo. Por lo que recuerdo, descargará un archivo llamado bigdump.php (con algunas instrucciones) y lo colocará en su servidor web en el directorio con el archivo de volcado de base de datos MySQL que es demasiado grande para importar a través de PHPMYADMIN. Luego navegue hacia él usando su navegador, algo así como http://your-website.com/bigdump.php .

  • Si está familiarizado con la línea de comandos y utiliza un sistema basado en Linux, puede usar un código como este:

    mysql -u NOMBRE DE USUARIO -p DATABASENAME <FILENAME.sql

Sin embargo, la base de datos y el usuario (con privilegios para la base de datos) deberán existir antes de ejecutar este comando. Tenga en cuenta que copié el comando anterior de otra fuente. Siempre hago mis volcados y restauraciones de esta manera: DUMP: mysqldump -u DB_USER -h DB_HOST -pDB_PASSWORD DB_NAME | gzip -9 > DB_NAME.sql.gz RESTORE:gunzip < PATH_TO_DUMP/DB_NAME.sql.gz | mysql -u DB_USER -pDB_PASSWORD DB_NAME

  • Finalmente, y lo más doloroso, puede elegir volcar tablas individuales o grupos de tablas en volcados lo suficientemente pequeños. Luego restaure estos volcados individuales uno a la vez a través de PHPMYADMIN.

Instrucciones de FTP y RESTAURACIÓN:

Descargue FileZilla aquí: http://filezilla-project.org/download.php?type=client

Por lo general, puede FTP en su servidor (especialmente un host compartido) utilizando el mismo inicio de sesión y contraseña que usaría para SSH (inicio de sesión de línea de comandos). Solo asegúrese de configurar la conexión a su servidor correctamente en FileZilla.

Una vez conectado, su ruta predeterminada probablemente será su carpeta $ HOME (en máquinas nix). Si no planeas hacer mucho FTPing, simplemente descarga lo que quieras allí. Siempre puedes moverlo desde la línea de comando.

Si envió FTP a un volcado de MySQL en su carpeta $ HOME, entonces el comando RESTORE para un DB llamado mydb y un archivo de volcado db llamado mydb.sql.gz (en la carpeta $ HOME) sería:

gunzip < $HOME/mydb.sql.gz | mysql -u DB_USER -pDB_PASSWORD mydb

donde obviamente necesitaría cambiar los valores DB_USER y DB_PASSWORD a qué usuario y contraseña configuró para la base de datos.

Recuerda:

  • El DB ya debe existir (pero debe estar vacío) antes de ejecutar el comando RESTORE
  • DB_USER y DB_PASSWORD deben configurarse para la base de datos antes del comando RESTORE (puede hacerlo desde PHPMYADMIN - pestaña Privilegios)
  • Cuando configura DB_USER desde PHPMYADMIN, por defecto solo permitirá que DB_USER acceda a la DB desde localhost (el servidor en el que está alojada la DB). Supongo que esto está bien para su concesión de situación. Cuando ingrese a DUMPs y RESTOREs más avanzados, es posible que desee hacerlo desde otra máquina por completo, lo que no es difícil pero requiere que se proporcione un par de datos más y DB_USER con los privilegios adecuados.

FTP la base de datos y restaurarla ... paso a paso

  1. Ubique el archivo de volcado MySQL comprimido en su escritorio (Ejemplo: C: \ Web \ DB \ Dumps \ mydb.sql.zip)
  2. Descargue e instale FileZilla
  3. En FileZilla, vaya a Archivo-> Administrador del sitio y haga clic en el botón Nuevo sitio (cuadrante inferior izquierdo de la GUI). Establezca el host en un dominio (Ejemplo: dest.com) que reside en su servidor DESTINATION Establezca el protocolo en FTP o SFTP (esto depende de su alojamiento, pregúnteles). Establezca el Usuario y la Contraseña (Ejemplo: Usuario = concesión, Contraseña = contraseña de concesión): si el protocolo FTP es SFTP, cualquier conjunto de credenciales de inicio de sesión SSH válidas debería funcionar.
  4. (En FileZilla) Haga clic en Conectar (botón más a la izquierda)
  5. (En FileZilla) Una vez conectado al servidor remoto (debe ser su servidor de DESTINO) use el lado izquierdo de FileZilla para navegar al directorio donde reside el archivo de volcado que encontró en el Paso 1. (La ruta para la máquina local está en el extremo izquierdo, aproximadamente a la mitad y está etiquetada como Sitio local: en nuestro ejemplo, el cuadro de texto junto al sitio local: leería C: \ Web \ DB \ Dumps).
  6. (En FileZilla) Localice el sitio remoto: etiqueta directamente a la derecha del sitio local :.
  7. (En FileZilla) No hay ninguna razón técnica por la que no pueda colocar el DB DUMP en la carpeta a la que se abre FileZilla. Es probable que su directorio $ HOME sea el predeterminado. Si no tiene ningún motivo para colocar el volcado de base de datos en un directorio específico, como para sus propios fines organizativos, deje la ruta en el sitio remoto solo. Escriba esa ruta (Ejemplo de Linux: / usr / grant).
  8. (En FileZilla) Localice el archivo en su máquina local en la mitad izquierda de FileZilla justo debajo del Árbol que se muestra debajo del sitio Local: etiqueta que encontró en el Paso 5. Haga doble clic en ese archivo y FileZilla lo enviará por FTP a su Sitio Remoto.
  9. Dentro de PHPMYADMIN en su servidor de DESTINO, cree una nueva base de datos (escriba mydb en el cuadro de texto Crear nueva base de datos y haga clic en el botón Crear).
  10. (En PHPMYADMIN) Elija mydb del menú de la izquierda.
  11. (En PHPMYADMIN) Haga clic en la pestaña Privilegios (arriba a la derecha). Una vez en esa página, haga clic en Agregar nuevo usuario.
  12. (En PHPMYADMIN-> Privilegios-> Agregar nuevo usuario) Proporcione un nombre de usuario (Ejemplo: mydb_grant) y contraseña (Ejemplo: mydb_password). En el menú desplegable Host, elija Local. Asegúrese de que esté seleccionado el botón de opción junto a "Conceder todos los privilegios en la base de datos". Luego haga clic en Ir (abajo a la derecha de la pantalla).
  13. SSH en su servidor de DESTINO.
  14. (En su terminal SSH) Vaya al directorio que escribió en el Paso 7. Usando un comando como - cd $HOMEo cd /usr/grant. (En máquinas Linux, $ HOME es una variable de entorno que será igual a / usr / grant).
  15. (En su terminal SSH) Ejecute el siguiente comando: gunzip < /usr/grant/mydb.sql.gz | mysql -u mydb_grant -pmydb_password mydb(no hay espacio entre -p y la contraseña porque así es como debe ser, eso no es un error tipográfico).

Una vez que se completa ese último comando, su DB ha sido RESTAURADA. No recomiendo usar el usuario de DB y la contraseña que proporcioné, simplemente reemplácelos con opciones más seguras.

DUMP y RESTORE en diferentes servidores sin FTP

Si desea omitir las cosas de FTP y no le importa volver a hacer el DUMP, puede hacerlo de esta manera:

  1. Inicie sesión en el servidor de DESTINATION (donde desea que resida la base de datos; lo llamaremos destination.com)
  2. Cree la base de datos, el usuario y los privilegios adecuados como se mencionó anteriormente en el servidor DESTINO
  3. Asegúrese de que los privilegios en el servidor SOURCE permitan a SOURCE_DB_USER acceder a la base de datos de forma remota, ya sea permitir el acceso desde dest.com o desde% (% - todos y en todas partes si tienen el nombre de usuario y contraseña correctos)
  4. En el servidor DESTINO, ejecute: mysqldump -u SOURCE_DB_USER -h source.com -pSOURCE_DB_PASSWORD mydb| gzip -9 > $HOME/mydb.sql.gzdonde source.com es el servidor FUENTE (donde reside actualmente el DB)
  5. Luego (en el servidor DESTINATION) ejecute: gunzip < $HOME/mydb.sql.gz | mysql -u DEST_DB_USER -pDEST_DB_PASSWORD mydb

Eso debería ser todo lo que necesita hacer para mover la base de datos de un servidor a otro. Las advertencias son que solo he hecho esto en mi propio Ubuntu dedicado (con LAMP estándar) y los servidores VPS de Dreamhost (que creo que ejecutan CentOS, pero podría estar equivocado).


3

Usted puede:

  • incrementar memory_limit
  • incrementar post_max_size
  • incrementar max_execution_time
  • debe reiniciar Apache después de hacer todo esto.
  • o usar Big Dump

1

¿Está comprimido su archivo SQL? Tuve este problema con un archivo sql comprimido de 6 MB. Lo descomprimí en un archivo sql sin comprimir de 53 MB y funcionó. La descompresión del archivo de volcado en proceso debe consumir toda la memoria.


0

si tiene acceso ssh al servidor con mysql, entonces podría colocar el archivo con mysql dump en algún lugar, ingrese a la consola mysql:

mysql -u myUser myDatabase

O si el servidor mysql está en un lugar que no sea localhost y permite conexiones no solo desde localhost que:

mysql -u myUser -h mysql.example.com myDatabase

Entonces se le pedirá una contraseña para su usuario de mysql. Ahora estás en la consola mysql. Aquí puedes escribir

source ~/mydump.sql;

Verá cómo se ejecutarán los comandos de su volcado.

En este método no te importan los límites de memoria php.


0

Si el tamaño de la base de datos es superior a 128 MB, divida la base de datos en partes.

Utilice el software SQL Dump Splitter

SQL Dump Splitter es una aplicación de 430 KB que brinda control total sobre la división de grandes bases de datos en archivos SQL más pequeños con facilidad. Con SQL Dump Splitter puedes:

  • Elige el tamaño de cada trozo
  • Opte por omitir comentarios (incluso para reducir el tamaño de la base de datos)
  • Automatiza la actividad.

¿Cómo automatizas la actividad? Uso el divisor y no tengo idea de cómo funciona ... completó la división sin decirme en qué trozos dividió el archivo y ahora no hay ayuda o preguntas frecuentes para ayudarlo a usarlo.
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.