MySQL Workbench Edit Table Data jest tylko do odczytu


84

Podczas próby edycji danych tabeli w MySQL Workbench 5.2.37 jest w trybie tylko do odczytu.

Można go edytować tylko wtedy, gdy tabela ma klucz podstawowy.

Czy jest jakaś poprawka do tabeli bez klucza podstawowego?

Dzięki

Jako jedną z sugestii spróbowałem zaktualizować WB 5.2.40. Ale ten problem nadal istnieje… Czy ktoś mógłby pomóc…


Żadne z sugerowanych pytań nie działa. Nie mogę dodać kolumny, a następnie ją usunąć. Przejście do phpMyadmin jest teraz moim wyborem.
ophidion

PK jest wymagany, oto powiązane FAQ - dev.mysql.com/doc/workbench/en/…
Philip Olson

Prawdopodobnie istotny błąd MySQL Workbench dla osób, które znalazły ten wątek podczas wyszukiwania w Internecie: siatek wyników widoków nie jest edytowalna . Zwróć uwagę, że ten błąd dotyczy tylko widoków, które spełniają wszystkie inne ograniczenia wymagane do „ aktualizacji ” i mogą być modyfikowane za pomocą prostych zapytań SQL.
TheDudeAbides

Odpowiedzi:


77

Zakładam, że tabela ma klucz podstawowy. Najpierw spróbuj uruchomić polecenie odblokowania tabel, aby sprawdzić, czy to naprawi.

Jeśli wszystko inne zawiedzie, możesz zmienić tabelę, aby utworzyć nową kolumnę klucza podstawowego z automatyczną inkrementacją, co, miejmy nadzieję, powinno to naprawić. Gdy skończysz, powinieneś być w stanie usunąć kolumnę bez żadnych problemów.

Jak zawsze chcesz wykonać kopię zapasową przed zmianą tabel. :)

Uwaga: Środowisko pracy MySQL nie może działać bez klucza podstawowego, jeśli na tym polega problem. Jeśli jednak masz wiele do wielu tabel, możesz ustawić obie kolumny jako klucze podstawowe, co pozwoli Ci edytować dane.


5
Właściwie mój problem polega na tym, że nie chcę mieć klucza podstawowego w mojej tabeli. Zapoznaj się z inną odpowiedzią na to pytanie.
EscalinNancy

2
Nie sądzę, aby to, co robisz, było możliwe w środowisku roboczym MYSQL, ponieważ program potrzebuje klucza podstawowego, aby wskazać, który wiersz chcesz edytować.
Thomas B,

Okie, dziękuję Thomas. W moich tabelach zawarłem klucz podstawowy.
EscalinNancy,

Używałem DBeavera i napotkałem ten sam problem. Odłączenie i ponowne połączenie rozwiązało problem!
lafleur

31

jeśli tabela nie ma zdefiniowanego klucza podstawowego lub unikatowego, nie dopuszczającego wartości null, środowisko robocze MySql nie może edytować danych.


Myślę, że nie ma na to rozwiązania.

14

Jeśli ustawisz domyślny schemat dla połączenia DB, to Select będzie działać w trybie tylko do odczytu, dopóki nie ustawisz jawnie swojego schematu

USE mydb;
SELECT * FROM mytable

będzie to również działać w trybie edycji:

SELECT * FROM mydb.mytable 

(MySql 5.2.42 / MacOsX)

Mam nadzieję, że to pomoże.


9

To jest znane ograniczenie w MySQLWorkbench (nie możesz edytować tabeli bez PK):

Aby edytować tabelę:

Metoda 1: (metoda nie działa w niektórych przypadkach)
kliknij prawym przyciskiem myszy tabelę w przeglądarce obiektów i wybierz opcję Edytuj dane tabeli.

Metoda 2:
Raczej sugeruję dodanie klucza podstawowego:

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

i możesz najpierw chcieć usunąć istniejące wiersze:

Truncate table your_table_name

1
Nowsze wersje MySQL Workbench (moja to 6.3) nie mają opcji „Edytuj dane tabeli”.
JonP

6

Najechanie kursorem na ikonę „tylko do odczytu” w środowisku roboczym mysql powoduje wyświetlenie podpowiedzi wyjaśniającej, dlaczego nie można jej edytować. W moim przypadku powiedział, że można edytować tylko tabele z kluczami podstawowymi lub unikalnymi kolumnami niepodlegającymi wartości null.


gdzie jest ta ikona, o której mówisz?
Brad Kent

1
odpowiadając sobie: poniżej i po prawej stronie wyników na stole warsztatowym 6.3
Brad Kent

3

W MySQL Workbench potrzebujesz INDEKSU do edycji, nie musi to być PK (chociaż dodanie PK jest również rozwiązaniem).

Możesz utworzyć zwykły lub złożony INDEKS. To wszystko, czego potrzebuje MySQL WB, aby naprawić tylko do odczytu (mam v. 6.2 z MariaDB v. 10.1.4):

Kliknij prawym przyciskiem myszy tabelę, wybierz „Zmień tabelę…” i przejdź do zakładki „Indeksy”. W lewym okienku umieść niestandardową nazwę swojego indeksu, aw środkowym okienku zaznacz jedno (upewnij się, że dolina będzie unikalna) lub więcej pól (tylko upewnij się, że kombinacja jest unikalna)


3

Pojawiał się problem tylko do odczytu, nawet gdy wybierałem klucz podstawowy. W końcu doszedłem do wniosku, że to problem z obudową. Najwyraźniej kolumna PK musi mieć taką samą wielkość liter, jak zdefiniowano w tabeli. przy użyciu: workbench 6.3 w systemie Windows

Tylko czytać

SELECT leadid, firstname, lastname, dataecreated FROM lead;

Dozwolona edycja

SELECT LeadID, imię, nazwisko, data utworzona FROM lead;


1

Zgodnie z tym błędem , problem został rozwiązany w Workbench 5.2.38 dla niektórych osób i być może 5.2.39 dla innych - czy możesz zaktualizować do najnowszej wersji (5.2.40)?

Alternatywnie można obejść ten problem:

SELECT *,'' FROM my_table

Dziękuję za tak szybką odpowiedź .. Alternate SELECT nie działa .. Ale mogę zaktualizować .. Zaktualizuję i sprawdzę .. Wielkie dzięki eggyal ...
EscalinNancy

@EscalinNancy: Inna osoba w tym zgłoszeniu błędu skomentowała, że ​​alternatywnym obejściem jest użycie funkcji, np SELECT *, CONCAT('','') FROM my_table. Może to zadziała dla Ciebie?
Eggyal

Nie .. to nie działa .. Otrzymuję concat („.” ”) Jako kolejną kolumnę w zestawie wyników, ale nadal dane są tylko do odczytu. Teraz uaktualniam WB
EscalinNancy

@EscalinNancy: Przykro mi to słyszeć :( Możliwe, że ktoś tutaj może mieć więcej pojęcia, na czym polega problem - ale jest bardziej prawdopodobne, że zobaczą to pytanie, jeśli nie zaakceptujesz mojej odpowiedzi.
eggyal

Tak samo jest w 5.2.44. Baza danych jest produktywna i działa dobrze w poprzedniej wersji środowiska roboczego.
Earth Engine

0

Kierując się postem Manitoby, znalazłem inne rozwiązanie. Podsumowując, rozwiązania to:

  1. Za pomocą polecenia USE

    USE mydb;
    SELECT * FROM mytable
    
  2. Z wyraźnym prefiksem schematu:

    SELECT * FROM mydb.mytable
    
  3. GUI

    W oknie „SCHEMATY” przeglądarki obiektów wszystkie ikony bazy danych nie są początkowo podświetlane, jeśli występuje ten sam problem. Możesz więc kliknąć prawym przyciskiem myszy ikonę bazy danych, która ma być domyślna, i wybrać „Ustaw jako domyślny schemat”.


0

1.) Musisz uczynić klucz podstawowy unikalnym, a następnie powinieneś móc edytować.

kliknij prawym przyciskiem myszy swoją tabelę w "niebieskich" schematach -> ALTER TABLE, poszukaj swojego klawisza primert (PK), a następnie zaznacz pole wyboru, UN, AI powinno już być zaznaczone. Następnie po prostu zastosuj i powinieneś być w stanie edytować dane w tabeli.

2.) Musisz również dołączyć klucz podstawowy I do instrukcji Select

Nr 1 nie jest naprawdę potrzebny, ale dobra praktyka.


0

Jeśli zapytanie zawiera JOIN, Mysql Workbench nie pozwoli na zmianę tabeli, nawet jeśli wszystkie wyniki pochodzą z jednej tabeli.

Na przykład następujące zapytanie

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

nie pozwoli Ci edytować wyników ani dodawać wierszy, mimo że wyniki są ograniczone do jednej tabeli. Musisz w szczególności zrobić coś takiego:

SELECT * FROM users WHERE id=1012;

a następnie możesz edytować wiersz i dodawać wiersze do tabeli.


Nie rozumiem, dlaczego pierwsze zapytanie nie działa, ale przynajmniej działa następujące zapytanie. Można edytować następujące zapytanie. SELECT u.* FROM users u WHERE u.id IN (SELECT user_id FROM passwords WHERE p.password IS NULL);
twk


0

MySQL będzie działać w trybie tylko do odczytu, gdy będziesz pobierać dane przez połączenie dwóch tabel, a w wyniku zostaną uwzględnione kolumny z dwóch tabel. Wtedy nie możesz bezpośrednio zaktualizować wartości.


0

Tak, stwierdziłem, że MySQL również nie może edytować tabel wyników. Zwykle tabele wyników łączące inne tabele nie mają kluczy podstawowych. Słyszałem, jak inni sugerowali umieszczenie tabeli wyników w innej tabeli, ale lepszym rozwiązaniem jest użycie Dbeavera, który może edytować tabele wyników.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.