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?
mysql
mysql-workbench
EscalinNancy
quelle
quelle
Antworten:
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.
quelle
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.
quelle
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.
quelle
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
quelle
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.
quelle
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).
quelle
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;
quelle
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
quelle
SELECT *, CONCAT('','') FROM my_table
. Vielleicht funktioniert das bei Ihnen?Von Manitobas Beitrag geleitet, fand ich eine andere Lösung. Zusammenfassend sind die Lösungen:
Mit einem USE-Befehl
USE mydb; SELECT * FROM mytable
Mit einem expliziten Schema-Präfix:
SELECT * FROM mydb.mytable
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.
quelle
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.
quelle
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.
quelle
SELECT u.* FROM users u WHERE u.id IN (SELECT user_id FROM passwords WHERE p.password IS NULL);
Deaktivieren Sie das markierte Häkchen, um die Rasterbearbeitung zu aktivieren
quelle
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.
quelle
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.
quelle