J'ai récemment changer de PC, il m'a fallu exporter mes bases de données (depuis phpMyAdmin) dans un fichier texte (.sql).
Au moment de l'importation avec PhpMyAdmin j'ai eu un message d'erreur de la part du serveur Apache :
Fatal error: Maximum execution time of 300 seconds exceeded
Mes bases de données sont trop volumineuses pour les importer via phpMyAdmin (plus de 5 mo) en HTTP.
J'ai eu beau modifier tous les fichiers de configuration (php.ini, etc.), il a du rester un endroit où le temps maximal d'exécution n'a pas été modifié...
La solution la plus simple pour faire de l'import massif reste la console mysql. Voici comment importer une telle configuration sur une plateforme Windows :
- Copiez votre fichier .sql (localhost.sql dans mon cas) dans le répertoire contenant mysql.exe (pour ma part : C:\wamp\bin\mysql\mysql5.0.51b\bin)
- Ouvrez une fenêtre DOS (Touche Windows + R > CMD [OK])
- Déplacez vous en ligne de commande dans le répertoire de mysql.exe (cd C:\wamp\bin\mysql\mysql5.0.51b\bin dans mon cas)
- Puis lancez l'importation du fichier : mysql -u root -p VotrePassword NOM_BDD < localhost.sql ("root" étant à remplacer par le nom d'utilisateur de votre base de donnée s'il diffère)
- L'invite vous demande votre mot de passe ("Enter password:")
- Si aucun message d'erreur n'est apparu, l'importation est terminée 🙂 Dans le cas contraire, des erreurs explicites vous indiqueront ce qui cloche (ce sont les mêmes erreurs que vous auriez eu avec phpMyAdmin puisque c'est le moteur MySQL qui les génère).
Si vous avez des erreurs du style "Can't create database 'toto'; database exists" vous pouvez utiliser phpMyAdmin pour pallier à la situation (supprimez la table qui existe déjà dans ce cas précis).
Vous pouvez également utiliser mysqlimport.exe présent dans le même répertoire que mysql.exe, cela peut vous être utile dans des scripts batch par exemple.
Pour importer rapidement une base gzippée sous Linux (source) :
gunzip -c /chemin/base.sql.gz | mysql -h hostname -u utilisateur -p nom_de_la_base
Je vous rappelle que WAMP n'est pas destiné à être utilisé en production. Il doit être employé à des fins de tests en pré-production par exemple.
Note : avez-vous reconnu le logo de phpMyAdmin façon "naturelle" en haut de ce billet :p ?