MySQL Workbench Edit Table Data ist schreibgeschützt


84

Wenn Sie versuchen, Tabellendaten in MySQL Workbench 5.2.37 zu bearbeiten, befindet sich dieser im schreibgeschützten Modus.

Es kann nur bearbeitet werden, wenn die Tabelle einen Primärschlüssel hat.

Gibt es eine Lösung für die Behandlung von Tabellen ohne Primärschlüssel?

Vielen Dank

Als einer der Vorschläge habe ich versucht, WB 5.2.40 zu aktualisieren. Aber immer noch besteht dieses Problem. Könnte jemand bitte helfen?


Nichts von der vorgeschlagenen Frage funktioniert. Ich kann keine Spalte hinzufügen und dann entfernen. Der Wechsel zu phpMyadmin ist jetzt meine Wahl.
Ophidion

Die PK ist erforderlich, hier ist eine verwandte FAQ - dev.mysql.com/doc/workbench/en/…
Philip Olson

Möglicherweise relevanter MySQL Workbench-Fehler für Personen, die diesen Thread bei einer Websuche gefunden haben: Die Ergebnisraster von Ansichten können nicht bearbeitet werden . Beachten Sie, dass dieser Fehler nur Ansichten betrifft, die alle anderen Einschränkungen erfüllen, die erforderlich sind, um " aktualisierbar " zu sein, und mit direkten SQL-Abfragen geändert werden können.
TheDudeAbides

Antworten:


76

Ich gehe davon aus, dass die Tabelle einen Primärschlüssel hat. Versuchen Sie zunächst, einen Befehl zum Entsperren von Tabellen auszuführen, um festzustellen, ob dies das Problem behebt.

Wenn alles andere fehlschlägt, können Sie die Tabelle ändern, um eine neue Primärschlüsselspalte mit automatischer Inkrementierung zu erstellen. Dies sollte hoffentlich behoben werden. Sobald Sie fertig sind, sollten Sie in der Lage sein, die Spalte ohne Probleme zu entfernen.

Wie immer möchten Sie eine Sicherungskopie erstellen, bevor Sie Tabellen ändern. :) :)

Hinweis: Die MySQL-Workbench kann ohne Primärschlüssel nicht funktionieren, wenn dies Ihr Problem ist. Wenn Sie jedoch viele bis viele Tabellen haben, können Sie beide Spalten als Primärschlüssel festlegen, mit denen Sie die Daten bearbeiten können.


5
Eigentlich ist mein Problem selbst, dass ich keinen Primärschlüssel in meiner Tabelle haben möchte. Bitte beziehen Sie sich auf die andere Antwort auf diese Frage.
EscalinNancy

2
Ich denke nicht, dass das, was Sie tun, in der MYSQL-Workbench möglich ist, da das Programm einen Primärschlüssel benötigt, um genau zu bestimmen, welche Zeile Sie bearbeiten möchten.
Thomas B

Okie. Danke Thomas. Ich habe den Primärschlüssel in meine Tabellen aufgenommen.
EscalinNancy

Ich habe DBeaver verwendet und hatte das gleiche Problem. Trennen und wieder verbinden hat es gelöst!
Lafleur

30

Wenn für die Tabelle kein Primärschlüssel oder keine eindeutige nicht nullfähige Variable definiert ist, kann die MySql-Workbench die Daten nicht bearbeiten.


Ich denke, es gibt keine Lösung dafür.

14

Wenn Sie ein Standardschema für Ihre DB-Verbindung festlegen, wird Select im schreibgeschützten Modus ausgeführt, bis Sie Ihr Schema explizit festgelegt haben

USE mydb;
SELECT * FROM mytable

Dies wird auch im Bearbeitungsmodus ausgeführt:

SELECT * FROM mydb.mytable 

(MySql 5.2.42 / MacOsX)

Ich hoffe das hilft.


9

Dies ist die bekannte Einschränkung in MySQLWorkbench (Sie können die Tabelle ohne PK nicht bearbeiten):

So bearbeiten Sie die Tabelle:

Methode 1: (Methode funktioniert in einigen Fällen nicht)
Klicken Sie mit der rechten Maustaste auf eine Tabelle im Objektbrowser und wählen Sie dort die Option Tabellendaten bearbeiten.

Methode 2:
Ich würde Ihnen eher empfehlen, stattdessen den Primärschlüssel hinzuzufügen:

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

und Sie möchten möglicherweise zuerst die vorhandenen Zeilen entfernen:

Truncate table your_table_name

1
Neuere Versionen von MySQL Workbench (meine ist 6.3) verfügen nicht über die Option "Tabellendaten bearbeiten".
JonP

6

Wenn Sie den Mauszeiger über das Symbol "Schreibgeschützt" in der MySQL-Workbench bewegen, wird ein Tooltip angezeigt, der erklärt, warum es nicht bearbeitet werden kann. In meinem Fall können nur Tabellen mit Primärschlüsseln oder eindeutigen nicht nullbaren Spalten bearbeitet werden.


Wo ist dieses Symbol, von dem du sprichst?
Brad Kent

1
Ich antworte mir: Es ist unten und rechts von den Ergebnissen auf Workbench 6.3
Brad Kent

3

In MySQL Workbench benötigen Sie einen INDEX zum Bearbeiten, keine PK (obwohl das Hinzufügen einer PK ebenfalls eine Lösung ist).

Sie können einen regulären INDEX oder einen zusammengesetzten INDEX erstellen. Das ist alles, was MySQL WB benötigt, um das schreibgeschützte Problem zu beheben (ich habe Version 6.2 mit MariaDB Version 10.1.4):

Klicken Sie einfach mit der rechten Maustaste auf Tabelle, wählen Sie "Tabelle ändern ..." und wechseln Sie zur Registerkarte "Indizes". Geben Sie im linken Bereich einen benutzerdefinierten Namen für Ihren Index ein und markieren Sie im mittleren Bereich eines (stellen Sie sicher, dass das Tal eindeutig ist) oder mehrere Felder (stellen Sie einfach sicher, dass die Kombination eindeutig ist).


3

Ich hatte das schreibgeschützte Problem, selbst als ich den Primärschlüssel auswählte. Ich fand schließlich heraus, dass es ein Gehäuseproblem war. Anscheinend muss die PK-Spalte genauso wie in der Tabelle definiert sein. using: workbench 6.3 unter windows

Schreibgeschützt

SELECT Leadid, Vorname, Nachname, Erstellungsdatum FROM Lead;

Zulässige Bearbeitung

SELECT LeadID, Vorname, Nachname, Erstellungsdatum FROM Lead;


1

Nach diesem Fehler wurde das Thema in Workbench 5.2.38 für einige Leute festgelegt und vielleicht 5.2.39 für andere-können Sie ein Upgrade auf die neueste Version (5.2.40)?

Alternativ ist es möglich, Folgendes zu umgehen:

SELECT *,'' FROM my_table

Vielen Dank für eine so schnelle Antwort. Alternatives SELECT funktioniert nicht. Aber ich kann ein Upgrade durchführen. Wird ein Upgrade durchführen und es überprüfen. Vielen Dank eggyal ...
EscalinNancy

@EscalinNancy: Eine andere Person in diesem Fehlerbericht kommentierte, dass eine alternative Problemumgehung darin besteht, eine Funktion zu verwenden, z SELECT *, CONCAT('','') FROM my_table. Vielleicht funktioniert das bei Ihnen?
Eggyal

Nein, es funktioniert nicht. Ich erhalte concat (''. '') Als weitere Spalte in der Ergebnismenge, aber die Daten sind immer noch schreibgeschützt. Jetzt aktualisiere ich WB
EscalinNancy

@EscalinNancy: Es tut mir leid, das zu hören :( Es ist möglich, dass jemand anderes hier eine bessere Vorstellung davon hat, was das Problem ist - aber es ist wahrscheinlicher, dass er diese Frage sieht, wenn Sie meine Antwort nicht
akzeptieren

Dies ist auch in 5.2.44 der Fall. Die Datenbank ist produktiv und funktioniert in früheren Versionen der Workbench einwandfrei.
Earth Engine

0

Von Manitobas Beitrag geleitet, fand ich eine andere Lösung. Zusammenfassend sind die Lösungen:

  1. Mit einem USE-Befehl

    USE mydb;
    SELECT * FROM mytable
    
  2. Mit einem expliziten Schema-Präfix:

    SELECT * FROM mydb.mytable
    
  3. GUI

    Im Bereich "SCHEMAS" des Objektbrowsers werden zunächst nicht alle Datenbanksymbole hervorgehoben, wenn Sie dasselbe Problem haben. Sie können also mit der rechten Maustaste auf das Datenbanksymbol klicken, das Sie als Standardschema festlegen möchten, und "Als Standardschema festlegen" auswählen.


0

1.) Sie müssen den Primärschlüssel eindeutig machen, dann sollten Sie ihn bearbeiten können.

Klicken Sie mit der rechten Maustaste auf Ihre Tabelle in den "blauen" Schemata -> ALTER TABLE, suchen Sie nach Ihrem Primert Key (PK) und aktivieren Sie das Kontrollkästchen UN. Die KI sollte bereits aktiviert sein. Danach einfach anwenden und Sie sollten in der Lage sein, die Tabellendaten zu bearbeiten.

2.) Sie müssen auch den Primery-Schlüssel in Ihre select-Anweisung aufnehmen

Nr. 1 ist nicht wirklich notwendig, aber eine gute Praxis.


0

Wenn Ihre Abfrage JOINs enthält, können Sie in MySQL Workbench die Tabelle nicht ändern, selbst wenn Ihre Ergebnisse alle aus einer einzigen Tabelle stammen.

Zum Beispiel die folgende Abfrage

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

Sie können die Ergebnisse nicht bearbeiten oder Zeilen hinzufügen, obwohl die Ergebnisse auf eine Tabelle beschränkt sind. Sie müssen speziell etwas tun wie:

SELECT * FROM users WHERE id=1012;

Anschließend können Sie die Zeile bearbeiten und der Tabelle Zeilen hinzufügen.


Ich verstehe nicht, warum die erste Abfrage nicht funktioniert, aber zumindest die folgende Abfrage funktioniert. Sie können die folgende Abfrage bearbeiten. SELECT u.* FROM users u WHERE u.id IN (SELECT user_id FROM passwords WHERE p.password IS NULL);
Twk

0

Geben Sie hier die Bildbeschreibung ein

Deaktivieren Sie das markierte Häkchen, um die Rasterbearbeitung zu aktivieren


0

MySQL wird im schreibgeschützten Modus ausgeführt, wenn Sie durch Verknüpfen zweier Tabellen abrufen und Spalten aus zwei Tabellen im Ergebnis enthalten sind. Dann können Sie die Werte nicht direkt aktualisieren.


0

Ja, ich habe festgestellt, dass MySQL auch keine Ergebnistabellen bearbeiten kann. Normalerweise haben Ergebnistabellen, die andere Tabellen verbinden, keine Primärschlüssel. Ich habe gehört, dass andere vorgeschlagen haben, die Ergebnistabelle in eine andere Tabelle einzufügen, aber die bessere Lösung ist die Verwendung von Dbeaver, mit dem Ergebnistabellen bearbeitet werden können.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.