Quando si ha un database troppo grande l’importazione da phpMyAdmin diventa impossibile perchè apache va incontro all’impossibilità di uploadare file troppo grandi e l’engine php va in timeout. Sono parametri che si possono configurare da php.ini, i parametri sono ‘post_max_size’ e ‘upload_max_filesize’. Poichè ‘post_max_size’ è il limite di tutti i contenuti di un post, si può scegliere che ‘post_max_size’ sia un multiplo di ‘upload_max_filesize’ per consentire l’upload multiplo di file ma in questo caso non è essnziale. Il modulo di upload limita le dimensioni del file che può essere uploadato al al più piccolo dei due valori post_max_size, o upload_max_filesize. Il default per PHP è 2 MB per upload_max_filesize, e 8 MB per post_max_size.
Nel php.ini potete configurare i due valori a 128 MB per esempio
upload_max_filesize = 128M
post_max_size =
128
M
o se permesso dalle configurazioni globali anche da .htaccess nella directory di interesse
php_value upload_max_filesize 128M
php_value post_max_size 128M
a questo punto dovete anche fare i conti con max_execution_time che definisce appunto il tempo massimo per il quale un singolo script può funzionare senza che venga considerato problematico. Il defoult è 30 (secondi) … potete alzarlo, ma quanto tempo richieda un importazione è sempre un interrogativo.
Anche in locale se volete tagliare la testa al toro meglio effettuare l’importazione direttamente da shell per qualsiasi sistema operativo. In windows la sintassi è la seguente
mysql -u USER -p DATABASE < path_to_file/filename.sql
fate in modo che l’eseguzione del comando venga lanciata dalla cartella nella quale avete il file mysqldump.exe. Se anche qui avete un errore sui tempi massimi di eseguzione
Se proprio siete amanti del php potete configurare e usare lo script di ozerov.de
Se invece ricevete l’errore ERROR 1064 dopo l’eseguzione da shell, l’errore non sta nell’importazione ma probabilmente avete esportato con phpmyadmin che ha finito il suo temp di eseguzione ed è andato in timeout troncando l’eseguzione.
Se avete ancora probelemi… (eh ma basta!!) usate il seguente metodo che è verboso e acora più efficente:
mysql -u USER -p
a questo punto vi sarà chiesta la password
use DATABASE
source path_to_file/mysqldump.sql
Esportazione
Se girate il verso del segno minore in maggiore (>) e usate mysqldump scarica il contenuto del database (se esiste un file con quel nome il file verrà sovrascritto).
mysqldump -u USER -p DATABASE > path_to_file/filename.sql
Con –all-databases scaricate tutti i db del vostro mysql.
Per la cronaca con linux i comandi non sarebbero fondamentalmente diversi