MENU

MySql .sql importazione da command di windows

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 = 128M

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

 

2154 Visualizzazioni totali 2 Visualizzazioni odierne

Leave a Comment!

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *