web-dev-qa-db-fra.com

La table est 'en lecture seule'

Lorsque je veux exécuter une requête update sur ma table, un message d'erreur s'affiche:

1036 - La table data est en lecture seule.

Comment puis-je résoudre ce problème?

Les attributs de table dans /var/db/mysql sont définis sur 777.

La fonction 'Repair Table' ne semble pas aider.

Y a-t-il quelque chose que je puisse faire avec ça?

22
Cyclone

À qui appartient/var/db/mysql et dans quel groupe appartiennent-ils? mysql: mysql vous aurez également besoin de redémarrer mysql pour que les modifications prennent effet

vérifier également que l'utilisateur actuellement connecté dispose d'un accès GRANT pour mettre à jour

25
ncremins

Dans mon cas, le fichier de configuration de mysql avait innodb_force_recovery = 1. Ce commentaire a résolu le problème. J'espère que ça aide quelqu'un. 

25
Rahi

Vous devriez changer le propriétaire en MYSQL: MYSQL.

Utilisez cette commande: chown -Rf mysql:mysql /var/lib/mysql/DBNAME

6
kamranonline

(Cette réponse est liée au titre, mais non à la question initiale.)

Si vous (comme moi) essayez de modifier temporairement vos données via l'interface MySQL Workbench:

  • Si la table n'a pas de clé primaire, MySQL Workbench n'a aucun moyen d'identifier la ligne que vous essayez de modifier, vous ne pouvez donc pas la modifier.

  • Dans ce cas, la solution consiste à modifier les données via un autre chemin ou simplement à ajouter une clé primaire à la table.

En tout cas, j'espère que ça aidera quelqu'un :) 

3
Fom

MySQL n'a pas d'accès en écriture au fichier de base de données. Vérifiez les autorisations et le propriétaire du fichier.

1
Borodin

Ma situation est chaque fois que je devais éditer "innodb_force_recovery = 1" dans my.ini pour forcer mysql à démarrer, et le journal des erreurs affichait une erreur disant: 

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 chemin_fichier:.\Mysql\innodb_table_stats.ibd. Impossible d'ouvrir le profil d'espace table/profile_commentmeta qui utilise l'espace ID: 1 dans chemin_fichier:.\Profile\profile_commentmeta.ibd

Je ne savais pas pourquoi ce fichier ne pouvait pas s'ouvrir et cela causait aussi beaucoup d'autres problèmes de "lecture de table" à d'autres bases de données.

Voici comment j'ai résolu ce problème de manière simple sans nuire aux autres fichiers.

1 Tout d’abord, assurez-vous d’ajouter (innodb_force_recovery = 1} _ Au-dessous de [mysqld] dans mon fichier.ini, et cela fonctionne sous le chemin: X :\xampp\mysql\bin\my.ini 

2 Ensuite, exportez toutes les bases de données via localhost/phpmyadmin sous l’onglet export, et stockez-les quelque part, comme ceci:

 export .sql databases somewhere

3 commentez le dossier données _ en data-bak, puis créez un nouveau dossier données

 enter image description here

4 Étape suivante, importez tous les .sql bases de données en arrière du panneau phpmyadmin, s'il vous plaîtégalement copiéphpmyadmin du fichier l'ancien data-bak dossier de fichiers dans le nouveau dossier de fichiers données. Si un fichier est nécessaire, retournez dans le dossier de fichiers data-bak pour le copier et le coller.

 enter image description here

Maintenant que tout est réglé et résolu, vous n'avez pas besoin de forcer mysql à démarrer à chaque fois . J'espère que cela fonctionnera aussi pour vous.

1
hong cai