it-swarm.it

importazione di file SQL di grandi dimensioni phpmyadmin

Sto cercando di importare questo file SQL in phpmyadmin e ho ricevuto questo messaggio

#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

Cosa devo fare per fare questa importazione?

12
grant tailor

Supponendo che non sia possibile aumentare ulteriormente la dimensione della memoria, ci sono un paio di opzioni.

  • Se non hai familiarità con la riga di comando e vuoi davvero attenerti a un'importazione in stile GUI, puoi usare BigDump ( http://www.ozerov.de/bigdump/ ). L'ho usato una volta ma è passato un po 'di tempo. Da quello che ricordo, scaricherai un file chiamato bigdump.php (con alcune istruzioni) e lo inserirai sul tuo server web nella directory con il file di dump di MySQL DB che è troppo grande per essere importato tramite PHPMYADMIN. Quindi naviga verso di esso usando il tuo browser - qualcosa come http://your-website.com/bigdump.php .

  • Se hai familiarità con la riga di comando e usi un sistema basato su Linux, puoi usare un codice come questo:

    mysql -u USERNAME -p DATABASENAME <FILENAME.sql

Tuttavia, il database e l'utente (con i privilegi del database) devono esistere prima di eseguire questo comando. Nota Ho copiato il comando sopra da un'altra fonte. Faccio sempre i miei dump e ripristini in questo modo: DUMP: mysqldump -u DB_USER -h DB_Host -pDB_PASSWORD DB_NAME | gzip -9 > DB_NAME.sql.gz RISTABILIRE: gunzip < PATH_TO_DUMP/DB_NAME.sql.gz | mysql -u DB_USER -pDB_PASSWORD DB_NAME

  • Infine, e più dolorosamente, potresti scegliere di scaricare singole tabelle o gruppi di tabelle in discariche abbastanza piccole. Quindi ripristinare questi singoli dump uno alla volta tramite PHPMYADMIN.

Istruzioni FTP e RIPRISTINO:

Scarica FileZilla qui: http://filezilla-project.org/download.php?type=client

In genere puoi FTP nel tuo server (in particolare un host condiviso) usando lo stesso login e la stessa password che avresti per SSH (il tuo login dalla riga di comando). Assicurati di impostare correttamente la connessione al tuo server in FileZilla.

Una volta connesso, il percorso predefinito sarà probabilmente la cartella $ HOME (su macchine nix). Se non hai intenzione di fare molto FTPing, scarica quello che vuoi lì. Puoi sempre spostarlo dalla riga di comando.

Se hai FTP un dump MySQL nella tua cartella $ HOME, il comando RESTORE per un DB chiamato mydb e un file di dump db chiamato mydb.sql.gz (nella cartella $ HOME) sarebbe:

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

dove ovviamente dovresti modificare i valori DB_USER e DB_PASSWORD in quale utente e password hai impostato per il DB.

Ricorda:

  • Il DB deve già esistere (ma essere vuoto) prima dell'esecuzione del comando RESTORE
  • DB_USER e DB_PASSWORD devono essere impostati per il DB prima del comando RESTORE (è possibile farlo da PHPMYADMIN - scheda Privilegi)
  • Quando si configura DB_USER da PHPMYADMIN, l'impostazione predefinita consentirà solo a DB_USER di accedere al DB da localhost (il server su cui è ospitato il DB). Suppongo che questo vada bene per la concessione della tua situazione. Quando entri in DUMP e RESTORE più avanzati potresti voler farlo da un'altra macchina che non è difficile ma richiede un paio di informazioni in più e DB_USER con i privilegi adeguati.

FTP il DB e RIPRISTINO ... Passo dopo passo

  1. Individua il file di dump MySQL compresso sul desktop (esempio: C:\Web\DB\Dumps\mydb.sql.Zip)
  2. Scarica e installa FileZilla
  3. In FileZilla vai su File-> Site Manager e fai clic sul pulsante Nuovo sito (quadrante in basso a sinistra della GUI). Impostare l'host su un dominio (esempio: dest.com) che risiede sul server DESTINATION. Imposta Protocollo su FTP o SFTP (dipende dal tuo hosting, chiedi loro). Imposta l'utente e la password (esempio: utente = concessione, password = password della concessione) - se il protocollo FTP è SFTP, qualsiasi set di credenziali di accesso SSH valide dovrebbe funzionare.
  4. (In FileZilla) Fai clic su Connetti (pulsante più in basso a sinistra)
  5. (In FileZilla) Una volta connesso al server remoto (dovrebbe essere il tuo server DESTINAZIONE) usa il lato sinistro di FileZilla per navigare nella directory in cui risiede il file di dump che hai individuato nel passaggio 1. (Il percorso per la macchina locale è all'estrema sinistra, circa a metà strada ed è etichettato Sito locale :. Nel nostro esempio la casella di testo accanto a Sito locale: leggerebbe C:\Web\DB\Dumps.)
  6. (In FileZilla) Individua il sito remoto: etichetta direttamente a destra del sito locale :.
  7. (In FileZilla) Non vi è alcun motivo tecnico per cui non è possibile inserire DB DUMP nella cartella aperta da FileZilla. Probabilmente verrà impostato automaticamente sulla directory $ HOME. Se non hai motivo di inserire il dump del database in una directory specifica, ad esempio per i tuoi scopi organizzativi, lascia il percorso sul sito remoto da solo. Annota quel percorso (Esempio Linux:/usr/grant).
  8. (In FileZilla) Individua il file sul tuo computer locale nella metà sinistra di FileZilla appena sotto l'albero mostrato sotto il sito locale: etichetta che hai trovato nel passaggio 5. Fai doppio clic su quel file e FileZilla lo FTP sul tuo sito remoto.
  9. In PHPMYADMIN sul tuo server DESTINATION, crea un nuovo database (digita mydb nella casella di testo Crea nuovo database e fai clic sul pulsante Crea).
  10. (In PHPMYADMIN) Scegli mydb dal menu a sinistra.
  11. (In PHPMYADMIN) Fai clic sulla scheda Privilegi (in alto a destra). Una volta su quella pagina, fai clic su Aggiungi nuovo utente.
  12. (In PHPMYADMIN-> Privilegi-> Aggiungi nuovo utente) Fornire un nome utente (esempio: mydb_grant) e una password (esempio: mydb_password). Nel menu a discesa Host, seleziona Locale. Assicurarsi che sia selezionato il pulsante di opzione accanto a "Concedi tutti i privilegi sul database". Quindi fare clic su Vai (in basso a destra dello schermo).
  13. SSH nel tuo server DESTINATION.
  14. (Nel terminale SSH) Passare alla directory annotata al passaggio 7. Utilizzo di un comando come - cd $HOME o cd /usr/grant. (Su macchine Linux $ HOME è una variabile d'ambiente che sarà uguale a/usr/grant.)
  15. (Nel tuo terminale SSH) Esegui il seguente comando: gunzip < /usr/grant/mydb.sql.gz | mysql -u mydb_grant -pmydb_password mydb (non c'è spazio tra -p e la password perché è così che deve essere, non è un refuso).

Una volta completato l'ultimo comando, il DB è stato ripristinato. Non consiglio di utilizzare l'utente DB e la password forniti semplicemente sostituirli con scelte più sicure da soli.

DUMP e RESTORE su server diversi senza FTP

Se desideri saltare le cose FTP e non ti dispiace ripetere il DUMP, puoi farlo in questo modo:

  1. Accedi al server DESTINATION (dove vuoi che risieda il DB - lo chiameremo destination.com)
  2. Creare il DB, l'utente e i privilegi corretti come indicato sopra sul server DESTINATION
  3. Assicurati che i privilegi sul server SOURCE consentano a SOURCE_DB_USER di accedere al DB da remoto - consenti l'accesso da dest.com o da% (% - tutti e ovunque se hanno il nome utente e la password corretti)
  4. Sul server DESTINATION eseguire: mysqldump -u SOURCE_DB_USER -h source.com -pSOURCE_DB_PASSWORD mydb| gzip -9 > $HOME/mydb.sql.gz dove source.com è il server SOURCE (dove risiede attualmente il DB)
  5. Quindi (sul server DESTINATION) esegui: gunzip < $HOME/mydb.sql.gz | mysql -u DEST_DB_USER -pDEST_DB_PASSWORD mydb

Dovrebbe essere tutto ciò che devi fare per spostare il DB da un server a un altro. Un avvertimento è che l'ho mai fatto solo sul mio Ubuntu dedicato (con LAMP standard) e sui server VPS di Dreamhost (che credo eseguano CentOS ma potrei sbagliarmi).

12
gabe

Puoi:

  • aumentare memory_limit
  • aumentare post_max_size
  • aumentare max_execution_time
  • deve riavviare Apache dopo aver fatto tutto questo.
  • oppure usa Big Dump
3
Salman

Il tuo file SQL è compresso? Ho avuto questo problema con un file sql zippato da 6 MB. L'ho decompresso in un file sql non compresso da 53 MB e ha funzionato. La decompressione del file di dump in-process deve consumare tutta la memoria.

1
Jeremy

se la dimensione del database è superiore a 128 MB, suddividere il database in parti.

Utilizzare il software SQL Dump Splitter

SQL Dump Splitter è un'applicazione da 430 KB che offre un controllo totale sulla suddivisione di enormi database in file SQL più piccoli con facilità. Con SQL Dump Splitter puoi:

  • Scegli la dimensione di ogni pezzo
  • Scegli di saltare i commenti (per ridurre anche le dimensioni del DB)
  • Automatizza l'attività.
0
Sumit Bijvani

se hai accesso ssh al server con mysql, allora potresti posizionare il file con mysql dump in qualche posto, entra nella console mysql:

mysql -u myUser myDatabase

O se il server mysql si trova in un posto diverso da localhost e consente connessioni non solo da localhost di:

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

Di quanto ti verrà richiesta la password per il tuo utente mysql. Ora sei nella console mysql. Qui puoi digitare

source ~/mydump.sql;

Vedrai come verranno eseguiti i comandi dal tuo dump.

In questo metodo non ti interessa alcun limite di memoria php.

0
yas375