57 votes

Le nombre de colonnes de mysql.user est incorrect. Attendu 42, trouvé 44. La table est probablement corrompue

Actuellement, je suis en utilisant la version la plus récente de ISPConfig 3. Aujourd'hui, je voulais ajouter une base de données et l'utilisateur. Il n'a pas de travail. Ensuite, j'ai essayé sur PHPmyadmin et ça ne fonctionne pas.

Quand j'ai essayé d'ajouter un utilisateur dans PHPMyadmin Utilisateurs du Panneau, j'ai reçu le message d'erreur suivant:

Vous avez une erreur dans votre syntaxe SQL; consultez le manuel correspond à votre versions du serveur MySQL pour la bonne syntaxe à utiliser près de '* DE 'test'@'localhost" à la ligne 1

La sortie de /var/log/mysql/erreur.journal:

[ERREUR] nombre de Colonnes de mysql.l'utilisateur est incorrect. Attendu 42 ans, a trouvé 44. La table est probablement endommagé

Version de Mysql: 5.5.55-0+deb8u1 PHPMyadmin Version: 4:4.2.12-2+deb8u2

Debian Linux 8

126voto

Correcter Points 990

J'ai eu le même problème lorsque j'ai mis à jour le serveur mysql de 5.5 à 5.7 dans Debian 8 (Jessie). Dans de rares cas, cela se produit probablement si vous mettez à jour directement en ignorant les séquences de versions. (Beaucoup de gens le font, mais ces mises à jour ne sont pas officiellement supportées). Dans mon cas, cela a bien fonctionné lorsque j'ai exécuté la commande suivante:

 mysql_upgrade --force -uroot -p
 

J'espère que cela t'aidera

30voto

jadik Points 169

La migration de mariadb 10 à mysql 5.6 vu des problèmes similaires. Le message d'erreur que j'ai reçu, était légèrement différent de ce que les autres personnes mentionnées sur cette page... qui, bien sûr, signifie qu'il une autre solution. Lors de la tentative de modifier un enregistrement d'utilisateur, j'ai reçu le message d'erreur suivant:

Nombre de colonnes de mysql.l'utilisateur est incorrect. Attendu 43, 46. La table est probablement endommagé

Certains des conseils ci-dessus a aidé à définir le problème. Après avoir pris un coup d'oeil à un autre serveur (mysql 5.6 un), j'ai comparé les champs à la fois le "corrompu" de l'utilisateur table (de l'mariadb 10 mysql.table des utilisateurs) et la "fonctionnelle" de l'utilisateur table à l'autre mysql 5.6 de mysql.table des utilisateurs.

J'ai enlevé les trois domaines problématiques à l'aide de la base de données mysql cli & les commandes suivantes:

mysql -u root -p
use mysql;
alter table mysql.user drop column default_role;
alter table mysql.user drop column max_statement_time;
alter table mysql.user drop column password_expired;
quit

Problème résolu!

23voto

Fadid Points 31

est inquiet pour moi

 mysql_upgrade -uroot -p
 

et ajoutez votre mot de passe root

6voto

tokenizer_fsj Points 717

Dans mon cas, et suite à la recommandation du message d'erreur, j'ai exécuté:

 root@mysql-190877524-gm3j4:/# mysql_upgrade -uroot -p***
Checking if update is needed.
Checking server version.
Running queries to upgrade MySQL server.
Checking system database.
mysql.columns_priv                                 OK
mysql.db                                           OK
mysql.engine_cost                                  OK
mysql.event                                        OK
mysql.func                                         OK
mysql.general_log                                  OK
mysql.user                                         OK
Upgrading the sys schema.
Checking databases.
[...]
Upgrade process completed successfully.
Checking if update is needed.
 

Cela a tout résolu.

4voto

nfo Points 144

J'ai eu le même problème aujourd'hui avec Debian (Jessie) et une autre boîte Ami Linux. Supprimer la colonne mot de passe expiré de la table utilisateur mysql a résolu le problème pour moi.

 mysql> alter table mysql.user drop column password_expired;
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X