importando arquivo SQL grande phpmyadmin


12

Estou tentando importar este arquivo SQL no phpmyadmin e recebi esta mensagem

#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

O que faço para fazer essa importação?

Respostas:


12

Supondo que você não possa aumentar ainda mais o tamanho da memória, existem algumas opções.

  • Se você não está familiarizado com a linha de comando e deseja realmente manter uma importação no estilo da GUI, pode usar o BigDump ( http://www.ozerov.de/bigdump/ ). Eu usei uma vez, mas já faz um tempo. Pelo que me lembro, você fará o download de um arquivo chamado bigdump.php (com algumas instruções) e o colocará em seu servidor da web no diretório com o arquivo de despejo de banco de dados MySQL DB muito grande para importar via PHPMYADMIN. Em seguida, navegue até ele usando o navegador - algo como http://your-website.com/bigdump.php .

  • Se você estiver familiarizado com a linha de comando e usando um sistema baseado em Linux, poderá usar um código como este:

    mysql -u USERNAME -p DATABASENAME <FILENAME.sql

O banco de dados e o usuário (com privilégios para o banco de dados) precisarão existir antes de executar este comando. Nota: eu copiei o comando acima de outra fonte. Eu sempre faço meus despejos e restaurações assim: 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, e o mais doloroso, você pode optar por despejar tabelas individuais ou grupos de tabelas em despejos suficientemente pequenos. Em seguida, restaure esses despejos individuais, um de cada vez, via PHPMYADMIN.

Instruções FTP e RESTORE:

Faça o download do FileZilla aqui: http://filezilla-project.org/download.php?type=client

Normalmente, você pode enviar FTP para o servidor (especialmente um host compartilhado) usando o mesmo login e senha que usaria para o SSH (login da linha de comando). Apenas certifique-se de configurar a conexão com o servidor corretamente no FileZilla.

Uma vez conectado, seu caminho padrão provavelmente será sua pasta $ HOME (em máquinas nix). Se você não está planejando fazer muito FTP, simplesmente despeje o que você quer lá. Você sempre pode movê-lo da linha de comando.

Se você transferisse por FTP um Dump do MySQL para a pasta $ HOME, o comando RESTORE para um banco de dados chamado mydb e um arquivo db dump chamado mydb.sql.gz (na pasta $ HOME) seria:

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

onde você obviamente precisaria alterar os valores DB_USER e DB_PASSWORD para qual usuário e senha você configurou para o banco de dados.

Lembrar:

  • O banco de dados já deve existir (mas estar vazio) antes que o comando RESTORE seja executado
  • O DB_USER e o DB_PASSWORD devem ser configurados para o banco de dados antes do comando RESTORE (você pode fazer isso na guia PHPMYADMIN - Privilégios)
  • Quando você configura o DB_USER a partir do PHPMYADMIN, o padrão é permitir apenas que o DB_USER acesse o banco de dados a partir do host local (o servidor no qual o banco de dados está hospedado). Estou assumindo que isso é bom para a sua concessão de situação. Quando você entra em DUMPs e RESTOREs mais avançados, pode fazê-lo de outra máquina inteiramente, o que não é difícil, mas exige que mais algumas informações sejam fornecidas e DB_USER com os privilégios adequados.

FTP o banco de dados e restaurá-lo ... passo a passo

  1. Localize o arquivo de despejo do MySQL compactado na área de trabalho (exemplo: C: \ Web \ DB \ Dumps \ mydb.sql.zip)
  2. Baixe e instale o FileZilla
  3. No FileZilla, vá para File-> Site Manager e clique no botão New Site (quadrante inferior esquerdo da GUI). Defina o host como um domínio (exemplo: dest.com) que reside no servidor DESTINATION. Defina o protocolo como FTP ou SFTP (isso depende da sua hospedagem, pergunte a eles). Defina o Usuário e a Senha (Exemplo: Usuário = conceder, Senha = conceder senha) - se o protocolo FTP for SFTP, qualquer conjunto de credenciais de login SSH válidas deverá funcionar.
  4. (No FileZilla) Clique em Conectar (botão inferior esquerdo)
  5. (No FileZilla) Depois de conectado ao servidor remoto (deve ser o servidor DESTINATION), use o lado esquerdo do FileZilla para navegar até o diretório em que reside o arquivo de despejo localizado na Etapa 1. (O caminho para a máquina local está na extrema esquerda, aproximadamente na metade do caminho e é rotulado como Local site :. No nosso exemplo, a caixa de texto ao lado de Local site: seria C: \ Web \ DB \ Dumps.)
  6. (No FileZilla) Localize o rótulo Site remoto: diretamente à direita do Site local :.
  7. (No FileZilla) Não há motivo técnico para você não colocar o DB DUMP na pasta que o FileZilla abre. Provavelmente, será o padrão para o seu diretório $ HOME. Se você não tiver nenhum motivo para colocar o DB Dump em um diretório específico - como para seus próprios propósitos organizacionais -, deixe o caminho no site Remoto sozinho. Anote esse caminho (Exemplo do Linux: / usr / grant).
  8. (No FileZilla) Localize o arquivo na sua máquina local, na metade esquerda do FileZilla, logo abaixo da Árvore mostrada abaixo do site Local: etiqueta que você encontrou na Etapa 5. Clique duas vezes nesse arquivo e o FileZilla o enviará por FTP para o seu Site Remoto.
  9. No PHPMYADMIN do servidor DESTINATION, crie um novo banco de dados (digite mydb na caixa de texto Criar novo banco de dados e clique no botão Criar).
  10. (Em PHPMYADMIN) Escolha mydb no menu à esquerda.
  11. (No PHPMYADMIN) Clique na guia Privilégios (canto superior direito). Uma vez nessa página, clique em Adicionar novo usuário.
  12. (Em PHPMYADMIN-> Privilégios-> Incluir Novo Usuário) Forneça um nome de usuário (Exemplo: mydb_grant) e uma senha (Exemplo: mydb_password). No menu suspenso, escolha Local. Verifique se o botão de opção ao lado de "Conceder todos os privilégios no banco de dados" está selecionado. Em seguida, clique em Ir (canto inferior direito da tela).
  13. SSH no seu servidor DESTINATION.
  14. (No seu terminal SSH) Navegue até o diretório que você anotou na Etapa 7. Usando um comando como - cd $HOMEou cd /usr/grant. (Nas máquinas Linux, $ HOME é uma variável de ambiente que será igual a / usr / grant.)
  15. (No seu terminal SSH) Execute o seguinte comando: gunzip < /usr/grant/mydb.sql.gz | mysql -u mydb_grant -pmydb_password mydb(não há espaço entre -p e a senha, porque é assim que precisa ser, que não é um erro de digitação).

Depois que o último comando for concluído, seu banco de dados foi RESTAURADO. Não recomendo usar o usuário e a senha do banco de dados que forneci, basta substituí-los por opções mais seguras.

DUMP e RESTORE em diferentes servidores sem FTP

Se você deseja pular o material do FTP e não se importar em refazer o DUMP, faça o seguinte:

  1. Faça login no servidor DESTINATION (onde você deseja que o banco de dados resida - nós o chamaremos destination.com)
  2. Crie o banco de dados, o usuário e os privilégios adequados, conforme mencionado acima no servidor DESTINATION
  3. Verifique se os privilégios no servidor SOURCE permitem que SOURCE_DB_USER acesse o banco de dados remotamente - permita acesso a partir de dest.com ou de% (% - todos e em todos os lugares, se tiverem o nome de usuário e a senha corretos)
  4. No servidor DESTINATION, execute: mysqldump -u SOURCE_DB_USER -h source.com -pSOURCE_DB_PASSWORD mydb| gzip -9 > $HOME/mydb.sql.gzonde source.com é o servidor SOURCE (onde o banco de dados reside atualmente)
  5. Em seguida (no servidor DESTINATION), execute: gunzip < $HOME/mydb.sql.gz | mysql -u DEST_DB_USER -pDEST_DB_PASSWORD mydb

Isso deve ser tudo o que você precisa fazer para mover o banco de dados de um servidor para outro. Advertências são que eu só fiz isso no meu próprio Ubuntu dedicado (com LAMP padrão) e nos servidores VPS da Dreamhost (que eu acredito que executam o CentOS, mas posso estar errado).


3

Você pode:

  • aumentar memory_limit
  • aumentar post_max_size
  • aumentar max_execution_time
  • deve reiniciar o Apache depois de fazer tudo isso.
  • ou use o Big Dump

1

O seu arquivo SQL está compactado? Eu tive esse problema com um arquivo sql compactado de 6 MB. Eu o descompactei em um arquivo sql descompactado de 53 MB e funcionou. O descompactação do arquivo de despejo em processo deve consumir toda a memória.


0

se você tem acesso ssh ao servidor com mysql, então você pode colocar o arquivo com despejo mysql em algum lugar, digite mysql console:

mysql -u myUser myDatabase

Ou se o servidor mysql estiver em outro local que não o localhost e permitir conexões não apenas do localhost, como:

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

Então você será solicitado a senha para o seu usuário mysql. Agora você no console do mysql. Aqui você pode digitar

source ~/mydump.sql;

Você verá como os comandos do seu dump serão executados.

Neste método, você não se importa com nenhum limite de memória php.


0

se o tamanho do seu banco de dados for superior a 128 MB, divida-o em partes.

Use o software SQL Dump Splitter

O SQL Dump Splitter é um aplicativo de 430 KB que oferece controle total sobre a divisão de grandes bancos de dados em arquivos SQL menores com facilidade. Com o SQL Dump Splitter, você pode:

  • Escolha o tamanho de cada pedaço
  • Opte por pular comentários (para reduzir o tamanho do banco de dados)
  • Automatize a atividade.

como você automatiza a atividade? Eu uso o divisor e não tenho idéia de como ele funciona ... ele terminou a divisão sem me dizer em quais partes o arquivo foi dividido e agora não há ajuda ou FAQ para ajudar no uso.
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.