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 eu faço para fazer essa importação?
Supondo que você não possa aumentar ainda mais o tamanho da memória, existem algumas opções.
Se você não estiver familiarizado com a linha de comando e realmente quiser manter uma importação de estilo GUI, poderá usar o BigDump ( http://www.ozerov.de/bigdump/ ). Usei uma vez, mas faz tempo. Pelo que me lembro, você vai baixar um arquivo chamado bigdump.php (com algumas instruções) e colocá-lo em seu servidor web no diretório com o arquivo de despejo do MySQL DB que é muito grande para importar via PHPMYADMIN. Em seguida, navegue até ele usando seu 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. Observe que copiei o comando acima de outra fonte. Eu sempre faço meus dumps e restores 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
Instruções de FTP e RESTORE:
Baixe o FileZilla aqui: http://filezilla-project.org/download.php?type=client
Normalmente, você pode usar o FTP em seu servidor (especialmente um host compartilhado) usando o mesmo login e senha que usaria para SSH (seu login de linha de comando). Apenas certifique-se de configurar a conexão com seu servidor corretamente no FileZilla.
Uma vez conectado, seu caminho padrão provavelmente será sua pasta $HOME (em máquinas nix). Se você não planeja fazer muito FTP, basta despejar o que deseja lá. Você sempre pode movê-lo a partir da linha de comando.
Se você fez um FTP do MySQL Dump em sua pasta $HOME, o comando RESTORE para um banco de dados chamado mydb e um arquivo de despejo de banco de dados chamado mydb.sql.gz (na pasta $HOME) seria:
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:
FTP do DB e RESTAURA-lo... Passo a Passo
cd $HOME
oucd /usr/grant
. (Em máquinas Linux, $HOME é uma variável de ambiente que será igual a /usr/grant.)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, não é um erro de digitação).Depois que o último comando for concluído, seu banco de dados foi RESTAURADO. Eu não recomendo usar o usuário e a senha do banco de dados que eu forneci, basta substituí-los por opções mais seguras de sua preferência.
DUMP e RESTORE em diferentes servidores sem FTP
Se você deseja pular as coisas do FTP e não se importa em refazer o DUMP, pode fazê-lo desta maneira:
mysqldump -u SOURCE_DB_USER -h source.com -pSOURCE_DB_PASSWORD mydb| gzip -9 > $HOME/mydb.sql.gz
onde source.com é o servidor SOURCE (onde o banco de dados reside atualmente)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. As ressalvas são que eu só fiz isso no meu próprio Ubuntu dedicado (com LAMP padrão) e nos servidores VPS da Dreamhost (que acredito executar o CentOS, mas posso estar errado).
Você pode:
memory_limit
post_max_size
max_execution_time
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. A descompactação do arquivo de despejo em processo deve consumir toda a memória.
se o tamanho do seu banco de dados for maior que 128 MB, divida seu banco de dados em partes.
Use o software SQL Dump Splitter
SQL Dump Splitter é um aplicativo de 430 KB que oferece controle total sobre a divisão de bancos de dados enormes em arquivos SQL menores com facilidade. Com o SQL Dump Splitter você pode:
se você tiver acesso ssh ao servidor com mysql, poderá colocar o arquivo com mysql dump em algum lugar, digite mysql console:
Ou se o servidor mysql estiver em outro local que não o localhost e permitir conexões não apenas do localhost do que:
Então você será solicitado a senha para o seu usuário mysql. Agora você no console mysql. Aqui você pode digitar
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 do php.