MySQL : Corriger l'erreur './ibdata1' is of a different size 640 pages than specified in the .cnf file: initial 768 pages
Avant de commencer, assurez-vous d'avoir une sauvegarde complète de toutes vos données MySQL, car les procédures décrites peuvent entraîner une perte de données en cas d'erreur.
1/ Sauvegardez le fichier 'ibdata1':
Pour éviter toute perte de données, copiez le fichier ibdata1 dans un autre emplacement. Sous Linux, vous pouvez faire cela avec une commande telle que :
sudo cp /var/lib/mysql/ibdata1 /var/lib/mysql/ibdata1.backup
2/ Modifier le fichier de configuration MySQL/MariaDB:
Vous devez maintenant modifier le fichier de configuration MySQL pour refléter la taille correcte d'ibdata1. Ce fichier est généralement appelé my.cnf ou my.ini et se trouve soit dans le répertoire d'installation de MySQL, soit dans /etc/mysql/ sous Linux.
Pour MySQL
Editez le fichierde configuration MySQL my.cnf
nano /etc/mysql/my.cnf
Ajouter l'entrée suivante dans la bonne section (mention entre crochet)
[mysqld]
innodb_data_file_path = ibdata1:10M:autoextend
Pour MariaDb
Editez le fichier de configuration MariaDb my.cnf
nano /etc/mysql/mariadb.conf.d/50-server.cnf
Ajouter l'entrée suivante dans la bonne section (mention entre crochet)
[mariadb]
innodb_data_file_path = ibdata1:10M:autoextend
Cas particuliers
En fonction de votre configuration actuelle il peut être nécessaire d'ajuster la valeur renseignée dans la fichier de configuration, 10M par la valeur de la taille de votre fichier ibdata1. Modifiez cette ligne pour refléter la taille actuelle d'ibdata1. Si vous ne connaissez pas la taille actuelle d'ibdata1, vous pouvez l'obtenir en exécutant la commande suivante sous Linux :
du -h /var/lib/mysql/ibdata1
Une fois que vous connaissez la taille, modifiez la ligne dans le fichier de configuration pour refléter cette taille. Par exemple, si ibdata1 fait 640M, vous modifiez la ligne comme suit :
innodb_data_file_path = ibdata1:640M:autoextend
3/ Redémarrez MySQL/MariaDB:
Vous pouvez maintenant redémarrer MySQL/MariaDB. Sous Linux, vous pouvez utiliser une commande comme :
sudo systemctl start mysql
Si votre serveur MySQL ou MariaDb redémarre sans embuche, félicitation, vous venez de résoudre l'erreur "The Auto-extending innodb_system data file './ibdata1' is of a different size than specified in the .cnf file".