web-dev-qa-db-fra.com

XAMPP - MySQL se ferme de manière inattendue

Quand j'ouvre XAMPP et que je clique sur le bouton Démarrer MySQL, cela me donne une erreur. Je l'avais commencé juste avant, mais maintenant cela ne fonctionne pas.

12:19:12 PM [mysql] Tentative de lancer l'application MySQL ...
12:19:12 PM [mysql] Changement d'état détecté: en cours d'exécution
12:19:13 PM [mysql] Changement d'état détecté: arrêté
12:19:13 PM [mysql] Erreur: Fermeture de MySQL de manière inattendue.
12:19:13 PM [mysql] Cela peut être dû à un port bloqué, à des dépendances manquantes,
12:19:13 PM [mysql] privilèges inappropriés, un crash ou un arrêt de l'application par une autre méthode
12:19:13 PM [mysql] Appuyez sur le bouton Logs pour afficher les journaux d’erreur et vérifier
12:19:13 PM [mysql] l'observateur d'événements Windows pour plus d'indices
12:19:13 PM [mysql] Si vous avez besoin d'aide, copiez-le et publiez-le.
12:19:13 PM [mysql] fenêtre de journal entière sur les forums

Voici le contenu du journal des erreurs:

2013-08-02 12:19:12 4536 [Note] Le plug-in 'FEDERATED' est désactivé.
2013-08-02 12:19:12 f64 InnoDB: Avertissement: L'utilisation de innodb_additional_mem_pool_size est DEPRECATED. Cette option pourrait être supprimée dans les versions ultérieures, en même temps que l'option innodb_use_sys_malloc et l'allocateur de mémoire interne d'InnoDB.
2013-08-02 12:19:12 4536 [Note] InnoDB: Le segment de mémoire InnoDB est désactivé.
2013-08-02 12:19:12 4536 [Note] InnoDB: Les mutex et les rw_locks utilisent des fonctions de verrouillage Windows.
2013-08-02 12:19:12 4536 [Note] InnoDB: Les tables compressées utilisent zlib 1.2.3
2013-08-02 12:19:12 4536 [Note] InnoDB: Ne pas utiliser les instructions CPU crc32
2013-08-02 12:19:12 4536 [Note] InnoDB: Initialisation du pool de mémoire tampon, taille = 16,0 M
2013-08-02 12:19:12 4536 [Note] InnoDB: Initialisation terminée du pool de mémoire tampon.
2013-08-02 12:19:12 4536 [Note] InnoDB: Le format de fichier le plus pris en charge est Barracuda.
2013-08-02 12:19:12 4536 [Note] InnoDB: Les numéros de séquence de journaux 0 et 0 dans les fichiers ibdata ne correspondent pas au numéro de séquence de journaux 1616798 dans les fichiers_ib!
2013-08-02 12:19:12 4536 [Note] InnoDB: La base de données n'a pas été arrêtée normalement!
2013-08-02 12:19:12 4536 [Note] InnoDB: Lancement de la récupération après crash.
2013-08-02 12:19:12 4536 [Note] InnoDB: Lecture des informations sur les tablespaces à partir des fichiers .ibd ...

Le message d'erreur le plus important est ici:

2013-08-02 12:19:12 4536 [ERROR] InnoDB:
Tentative d’ouvrir un tablespace précédemment ouvert.
L'espace de table précédent mysql/innodb_table_stats utilise l'espace ID: 1 dans le chemin de fichier: .\Mysql\innodb_table_stats .ibd .
Impossible d'ouvrir le tablespace xat/payments qui utilise l'espace ID: 1 au chemin du fichier: .\Xat\payments.ibd

Le reste du journal:

InnoDB: Erreur: impossible d'ouvrir le fichier de tablespace à une table.\Xat\payments.ibd
InnoDB: Nous ne poursuivons pas la récupération sur incident, car la table risque de devenir
InnoDB: corrompu si nous ne pouvons pas lui appliquer les enregistrements du journal InnoDB.
InnoDB: Pour résoudre le problème et lancer mysqld:
InnoDB: 1) S'il y a un problème de permission dans le fichier et que mysqld ne peut pas
InnoDB: ouvrez le fichier, vous devez modifier les permissions.
InnoDB: 2) Si la table n’est pas nécessaire ou si vous pouvez la restaurer à partir d’une sauvegarde,
InnoDB: vous pouvez alors supprimer le fichier .ibd, et InnoDB fera une opération normale.
InnoDB: récupération sur incident et ignorer cette table.
InnoDB: 3) Si le système de fichiers ou le disque est endommagé et que vous ne pouvez pas supprimer
InnoDB: le fichier .ibd, vous pouvez définir innodb_force_recovery> 0 dans my.cnf.
InnoDB: et force InnoDB à poursuivre la récupération après crash ici.

Quelle est la cause de ces erreurs et comment puis-je les corriger?

54
Austin

Hey j'ai juste fait ça et ça a marché:

  1. exit serveur Xampp
  2. allez dans votre répertoire C:\xampp\mysql\data
  3. supprimer le fichier ibdata1
  4. redémarrage serveur xampp

Ça devrait marcher

162
Kratos
  1. Allez à mysql/data /
  2. Supprimer tous les fichiers aléatoires (sauf les dossiers de la base de données réelle)
  3. Redémarrez Apache et MySQL.

Il faut le réparer.

23
Kerim

My Xampp MySQL a fonctionné comme suit:

01.Go to mysql/data/ directory
02. delete the ibdata1 & ib_logfile*(ib_logfile0,ib_logfile1,ib_logfile101) file
03. restart xampp server
15
matinict

Ajoutez la ligne suivante sous la section [mysqld] dans le fichier de configuration mysql (my.ini), puis redémarrez le serveur Web Apache et le service mysql.

[mysqld]
innodb_force_recovery = 4
14
aog

J'ai le même type d'erreur dans mon C:\xampp\mysql\data\mysql_error.log en essayant de démarrer mysql.

2013-08-05 01:20:32 6780 [ERROR] InnoDB: Attempted to open a previously 
  opened tablespace. Previous tablespace mysql/slave_relay_log_info uses 
  space ID: 3 at filepath: .\mysql\slave_relay_log_info.ibd. Cannot open  
  tablespace test_database/test_table which uses space ID: 3 at filepath:  
  .\test_database\test_table.ibd

Vous devrez lire l'erreur de près. Ceci dit que test_database empêche mysql de démarrer.

Vous pourriez détruire la base de données incriminée, ces étapes corrigent le problème:

  1. Assurez-vous que mysql et xampp sont complètement fermés.
  2. Allez dans votre répertoire où mysql est installé, le mien est: C:\xampp\mysql\data
  3. Vous devriez voir un dossier avec le nom d'une base de données que vous avez créée. le mien était test_database.
  4. Créez un nouveau dossier ailleurs appelé C:\xampp\mysql\data\mysql\backuptablespace
  5. Glissez et déposez (ne supprimez pas) le dossier de la table de la base de données incriminé dans le répertoire de sauvegarde.
  6. Essayez de redémarrer mysql. Pour moi, tout a commencé en 1 seconde comme prévu.

Si cela ne fonctionne pas, replacez le fichier où vous avez commencé et vous retournerez là où vous avez commencé.

Si vous ne voulez pas supprimer la base de données et n'avez pas de sauvegardes:

Si vous n'avez pas de sauvegarde des données de la table et que mysql ne démarre pas parce que quelque chose est corrompu, vous devrez utiliser le processus d'élimination pour deviner et vérifier votre manière de savoir exactement ce que vous avez fait qui l'a corrompu. Suivez ces étapes:

  1. Créez un clone de l'intégralité du C:\xampp\ et stockez-le dans un endroit sûr pour pouvoir revenir à votre point de départ.
  2. Utilisez une approche de "recherche binaire" pour essayer de localiser l'élément corrompu dans la base de données mysql. Ce peut être un fichier, une table, une base de données, un utilisateur ou autre.
  3. Supprimez toute la base de données et voyez si cela permet à mysql de démarrer. Si c'est le cas, replacez la base de données et essayez de supprimer certaines des tables. Si ce n'est pas le cas, essayez de retirer quelque chose d'autre jusqu'à ce que ça commence.
  4. Essayez de supprimer ces fichiers de C:\xampp\mysql\data\mysql: db.frm db.MRD db.MYI db.opt user.frm user.MYD user.MYI

  5. Lorsque vous lancez mysql, essayez de remettre les choses en place jusqu'à ce que vous trouviez l'élément ajouté qui l'empêche de démarrer. Un bonus pour cela est que vous apprenez comment mysql fonctionne sous le capot.

Option nucléaire:

Quelque chose que vous avez fait foiré le serveur mysql. Une désinstallation et une réinstallation de XAMPP devraient annuler la corruption.

11
Eric Leschinski

Lorsque vous not exécutez XAMPP en tant qu'administrateur, fermer MySQL provoque souvent une corruption qui signifie que vous devez réparer ou supprimer vos tables. Pour éviter cela, vous devez soit exécuter XAMPP en tant qu'administrateur, soit utiliser la méthode appropriée Invite de commande pour arrêter MySQL.

Vous pouvez supprimer ibdata1 comme le suggère Kratos, mais cela peut vous laisser avec une base de données endommagée, car d'autres parties de votre base de données se trouvent toujours dans le dossier /mysql/data/. Dans mon cas, ces données résiduelles m'ont empêché d'installer WordPress.

Une façon plus simple de réparer les dégâts consiste à restaurer l'intégralité de votre dossier /mysql/data/. La version de dossier intégrée à Windows - cliquez avec le bouton droit de la souris sur /mysql/data/ et sélectionnez Restore previous versions. Vous pouvez ensuite supprimer le contenu actuel du dossier et le remplacer par le contenu de l'ancienne version.

Addendum: Pour ne pas oublier d’exécuter XAMPP en tant qu’administrateur, vous pouvez cliquer avec le bouton droit de la souris sur le raccourci XAMPP, aller à Properties, puis Advanced et enfin cocher Run as administrator.

9
Ryan Williams

J'ai également fait face à ce problème et voici comment j'ai résolu.
1. Assurez-vous que xampp ne se trouve pas dans le sous-répertoire. Par exemple, cela devrait être C:\xampp
2. Vous devrez peut-être exécuter en tant qu'administrateur pour exécuter l'application.

J'espère que cela fonctionnera!

7
SITHU

je faisais face au même problème et aucune des solutions énoncées ci-dessus ne m'a aidé. Je suis allé dans le fichier de configuration mysql (my.ini) et j'ai changé le numéro de port sous [mysqld] .Par défaut, mysql fonctionne sur le port 3306.

port= 3306

je l'ai changé pour,

port= 8111

Puis exécutez en tant qu'administrateur. Enfin, cela a fonctionné pour moi.

3
Sksaif Uddin

Voici ce que j'ai fait. J'ai redémarré mon ordinateur. Ensuite, je lance services.msc. J'ai arrêté le service MySQL puis l'ai redémarré. Le redémarrage du serveur Xampp.

2
kyzen

Les gars s'assurent que vous n'avez pas installé MySql Server. Parce que le serveur MySql est préinstallé et que je lance mysql à partir du panneau de configuration de xampp, des conflits de ports se produisent et ne fonctionnent pas .. SO avant de démarrer mysql à partir du panneau de configuration de xampp, assurez-vous que le serveur mysql n'est pas installé . J'utilise .net donc j'ai installé le serveur mysql dans le passé. La désinstallation a résolu mon problème ....

2
Gvs Akhil

Config-> Apache-> Ouvrez httpd.conf. recherchez Listen ou 80, mettez à jour le port d'écoute sur 8081 pour enregistrer et redémarrer le serveur. Oh, et fermez Skype si vous en avez.

1
Mihai

je commente cette déclaration dans mysql/bin/my.ini

'innodb_additional_mem_pool_size=2M'

et cela résout mon problème. que toi tout le monde

1
Boston Kenne

Pour moi, j'ai quitté Skype, qui occupait le port 80, puis Apache a fonctionné avec joie sur le port 80, puis sur Skype, qui a choisi un autre port cette fois-ci.

1
sudhanshu

Assurez-vous que l'heure du système est correcte. Le mien a été fixé à l’année 2040, mais le fait de corriger la date a résolu le problème.

1
shakee93

Si le message d'erreur est le suivant: "mysql.exe a cessé de fonctionner". Il suffit de lancer xampp-control.exe en tant qu'administrateur résoudra votre problème instantanément.

0
Anwar Hossain

C'est la réponse plus précise et a travaillé pour moi !!!! ! Une façon plus simple de réparer les dégâts consiste à restaurer l'intégralité de votre dossier/mysql/data /. La gestion des versions de dossiers est intégrée à Windows. Cliquez avec le bouton droit de la souris sur/mysql/data/et sélectionnez Restaurer les versions précédentes. Vous pouvez ensuite supprimer le contenu actuel du dossier et le remplacer par le contenu de l'ancienne version. comme mentionné ci-dessus par Ryan Williams.

0
zaffar

Cela signifie que vous avez déjà une base de données MySQL sur le port 3306.

Dans le panneau de configuration de XAMPP, appuyez sur le bouton "Config", puis sur "my.ini". Après cela, Ctrl-F et recherchez '3306'. Remplacez les "3306" que vous trouvez par un numéro de port différent de votre choix (vous pouvez choisir le 3307 ou le 3308 - j’ai choisi le 2811 et cela a fonctionné).

Après avoir remplacé chaque emplacement où "3306" est écrit, enregistrez le fichier et appuyez à nouveau sur "Démarrer" sur le panneau de commande.

0
Leo Chashchin

Renommez les fichiers ci-dessous à partir de mysql/data ib_logfile0 ib_logfile1 ibdata1

my.cnf innodb_buffer_pool_size à 200M selon votre mémoire innodb_log_buffer_size à 32M

Redémarrez votre serveur Apache

espérons que cela vous aide

0
insoftservice

si vous utilisez MariaDB, vous pouvez essayer ceci:

  1. Allez sur mysql/data /
  2. Renommez aria_log_control en aria_log_control_old
  3. Redémarrez "Mysql"
0
Leo

J'ai résolu! désactiver le contrôle de compte d'utilisateur avec msconfig avant d'installer xampp

enter image description here

0
joelmez4

Si l’une des choses ci-dessus ne fonctionne pas, retournez au répertoire Xampp et réinstallez Xampp. Cela fonctionne sûrement!

0
Srivardhan Cholkar

Pour cela, vous devez cliquer sur l'option x sous Modules Services et configurer les services MYSQL. Puis démarrez les services. Voici.

0
Fahad Naeem

Aucune solution ci-dessus n'a fonctionné pour moi. alors j'ai fait ci-dessous:

J'ai supprimé tous les fichiers du répertoire C:\xampp\mysql\data \, à l'exception des dossiers de ce répertoire. Cela a parfaitement fonctionné, mais mes bases de données précédentes ne fonctionnent plus maintenant. Donc, faites-le si vous n'y tenez pas, cela supprimera toutes vos bases de données précédentes dans phpmyadmin.

0
Aammad Ullah

Dans le cas où j'ai synchronisé mes données mysql et htdocs avec Dropbox, je devais simplement supprimer les fichiers en conflit dans le dossier mysql/data et les sous-dossiers. Les fichiers en conflit peuvent être identifiés par leurs noms, Dropbox vous le dira. Cela a résolu le problème pour moi.

0
maurisrx