web-dev-qa-db-fra.com

Les données de la table d'édition de MySQL Workbench sont en lecture seule

Lorsque vous essayez d’éditer des données de table dans MySQL Workbench 5.2.37, il est en lecture seule.

Il n'est éditable que si la table a une clé primaire.

Existe-t-il un correctif pour traiter avec table sans clé primaire?

Merci

Parmi les suggestions, j'ai essayé de mettre à jour WB 5.2.40. Mais ce problème existe toujours ... Quelqu'un pourrait-il vous aider?.

58
EscalinNancy

Je suppose que la table a une clé primaire. Commencez par essayer d’exécuter une commande unlock tables pour voir si cela résout le problème.

Si tout échoue, vous pouvez modifier la table pour créer une nouvelle colonne de clé primaire avec incrémentation automatique, ce qui devrait, espérons-le, résoudre le problème. Une fois que vous avez terminé, vous devriez pouvoir supprimer la colonne sans aucun problème. 

Comme toujours, vous voulez faire une sauvegarde avant de modifier les tables. :)

Remarque: MySQL Workbench ne peut pas fonctionner sans clé primaire si tel est votre problème. Toutefois, si vous avez plusieurs tables, vous pouvez définir les deux colonnes comme clés primaires, ce qui vous permettra de modifier les données.

55
Thomas B

si la table n'a pas de clé primaire ni de paramètre unique non nullable défini, MySql Workbench ne peut pas modifier les données.

23
Tarun Singhal

Si vous définissez un schéma par défaut pour votre connexion à la base de données, Select sera exécuté en mode lecture seule jusqu'à ce que vous définissiez explicitement votre schéma.

USE mydb;
SELECT * FROM mytable

cela fonctionnera également en mode édition:

SELECT * FROM mydb.mytable 

(MySql 5.2.42/MacOsX)

J'espère que ça aide.

11
Manitoba

Il s’agit du limitation connue dans MySQLWorkbench (vous ne pouvez pas éditer de table sans PK): 

Pour éditer la table:

Méthode 1: (la méthode ne fonctionne pas dans certains cas)
Cliquez avec le bouton droit de la souris sur une table dans le navigateur d’objets et choisissez l’option Editer les données de la table à partir de là. 

Méthode 2:
Je vous conseillerais plutôt d’ajouter la clé primaire à la place:

ALTER TABLE `your_table_name` ADD PRIMARY KEY (`column_name`);

et vous voudrez peut-être d'abord supprimer les lignes existantes:

Truncate table your_table_name
5
JerryGoyal

Dans MySQL Workbench, vous avez besoin d'un INDEX pour le modifier, pas besoin d'être PK (bien que l'ajout d'un PK soit également une solution). 

Vous pouvez créer un INDEX ou un INDEX composé. C'est tout ce dont MySQL WB a besoin pour résoudre le problème de lecture seule (j'ai la v. 6.2 avec MariaDB v. 10.1.4):

Cliquez avec le bouton droit de la souris sur la table, sélectionnez "Modifier la table ...", puis cliquez sur l'onglet "Index". Dans le volet de gauche, indiquez un nom personnalisé pour votre index et dans le volet du milieu, cochez-le (assurez-vous que la valeur sera unique) ou plusieurs champs (assurez-vous simplement que la combinaison est unique).

2
aesede

En survolant l'icône "lecture seule" dans mysql workbench, une info-bulle explique pourquoi elle ne peut pas être modifiée. Dans mon cas, il est dit que seules les tables avec des clés primaires ou des colonnes uniques non nullables peuvent être modifiées.

1
Tarun Garg

Selon ce bug , le problème a été résolu dans Workbench 5.2.38 pour certaines personnes et peut-être 5.2.39 pour d'autres - pouvez-vous mettre à niveau vers la dernière version (5.2.40)?

Alternativement, il est possible de contourner le problème avec:

SELECT *,'' FROM my_table
1
eggyal

Je rencontrais le problème en lecture seule même lorsque je sélectionnais la clé primaire. J'ai finalement compris qu'il s'agissait d'un problème de boîtier. Apparemment, la colonne PK doit avoir la même casse que celle définie dans le tableau. using: workbench 6.3 sur Windows

Lecture seulement

SELECT leadid, prenom, nom de famille, date de création de lead; 

Édition autorisée

SELECT LeadID, prénom, nom, date de création de lead; 

1
Quad9x

1.) Vous devez rendre la clé primaire unique, vous devriez alors pouvoir l'éditer.

faites un clic droit sur votre table dans les schémas "bleus" -> ALTER TABLE, recherchez votre clé primitive (PK), puis cochez simplement la case à cocher, UN, l'IA doit déjà être cochée. Ensuite, appliquez simplement et vous devriez pouvoir modifier les données de la table.

2.) Vous devez également inclure la clé primaire de votre déclaration select 

N ° 1 n'est pas vraiment nécessaire, mais une bonne pratique.

0
Degar007

Si votre requête a des jointures, Mysql Workbench ne vous permettra pas de modifier la table, même si vos résultats proviennent tous d'une seule table.

Par exemple, la requête suivante

SELECT u.* FROM users u JOIN passwords p ON u.id=p.user_id WHERE p.password IS NULL;

ne vous autorisera pas à modifier les résultats ni à ajouter des lignes, même si les résultats sont limités à une seule table. Vous devez spécifiquement faire quelque chose comme:

SELECT * FROM users WHERE id=1012;

et ensuite vous pouvez éditer la ligne et ajouter des lignes à la table.

0
Keith Tyler

Guidé par le message du Manitoba, j'ai trouvé une autre solution. En résumé, les solutions sont les suivantes:

  1. Avec une commande USE

    USE mydb;
    SELECT * FROM mytable
    
  2. Avec un préfixe de schéma explicite:

    SELECT * FROM mydb.mytable
    
  3. Interface graphique

    Dans le volet "SCHEMAS" du navigateur d'objets, toutes les icônes de base de données ne sont initialement pas mises en surbrillance si vous rencontrez le même problème. Pour que vous puissiez cliquer avec le bouton droit sur l’icône de la base de données que vous voulez utiliser par défaut, sélectionnez "Définir comme schéma par défaut".

0
Earth Engine