I dati della tabella di modifica di MySQL Workbench sono di sola lettura


87

Quando si prova a modificare i dati della tabella in MySQL Workbench 5.2.37, è in modalità di sola lettura.

È modificabile solo se la tabella ha una chiave primaria.

C'è qualche correzione per gestire la tabella senza chiave primaria?

Grazie

Come suggerimento, ho provato ad aggiornare WB 5.2.40. Ma questo problema esiste ancora .. Qualcuno potrebbe aiutare per favore ..


Niente della domanda suggerita funziona. Non posso aggiungere una colonna e poi rimuoverla. Passare a phpMyadmin è ora la mia scelta.
ophidion

Il PK è richiesto, ecco una FAQ correlata - dev.mysql.com/doc/workbench/en/…
Philip Olson

Possibile bug di MySQL Workbench per le persone che hanno trovato questo thread con una ricerca web: le griglie dei risultati delle visualizzazioni non sono modificabili . Notare che questo bug riguarda solo le viste che soddisfano tutti gli altri vincoli richiesti per essere " aggiornabili " e possono essere modificati con semplici query SQL.
TheDudeAbides

Risposte:


82

Presumo che la tabella abbia una chiave primaria. Per prima cosa prova a eseguire un comando di sblocco delle tabelle per vedere se questo lo risolve.

Se tutto il resto fallisce, puoi modificare la tabella per creare una nuova colonna chiave primaria con incremento automatico e, si spera, dovrebbe risolverlo. Una volta che hai finito dovresti essere in grado di rimuovere la colonna senza problemi.

Come sempre, vuoi fare un backup prima di modificare le tabelle. :)

Nota: MySQL workbench non può funzionare senza una chiave primaria se questo è il tuo problema. Tuttavia, se hai una tabella molti a molti, puoi impostare entrambe le colonne come chiavi primarie che ti consentiranno di modificare i dati.


6
In realtà il mio problema è di per sé, non voglio avere la chiave primaria nella mia tabella. Fare riferimento all'altra risposta per questa domanda.
EscalinNancy

2
Non penso che quello che fai sia possibile nel workbench MYSQL poiché il programma ha bisogno di una chiave primaria per individuare la riga che desideri modificare.
Thomas B,

Okie, grazie Thomas. Ho incluso la chiave primaria nelle mie tabelle.
EscalinNancy

Stavo usando DBeaver e ho affrontato lo stesso problema. Scollegare e ricollegare di nuovo lo ha risolto!
lafleur

32

se la tabella non dispone di una chiave primaria o di una definizione univoca non annullabile, MySql workbench non può modificare i dati.


Immagino che non ci siano soluzioni per questo.

14

Se imposti uno schema predefinito per la connessione DB, Select verrà eseguito in modalità di sola lettura fino a quando non imposti esplicitamente lo schema

USE mydb;
SELECT * FROM mytable

questo verrà eseguito anche in modalità di modifica:

SELECT * FROM mydb.mytable 

(MySql 5.2.42 / MacOsX)

Spero che possa aiutare.


9

Questa è la limitazione nota in MySQLWorkbench (non è possibile modificare la tabella senza PK):

Per modificare la tabella:

Metodo 1: (metodo non funzionante in alcuni casi)
fai clic con il pulsante destro del mouse su una tabella nel Browser degli oggetti e scegli l'opzione Modifica dati tabella da lì.

Metodo 2:
preferirei suggerirti di aggiungere la chiave primaria invece:

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

e potresti voler rimuovere prima le righe esistenti:

Truncate table your_table_name

1
Le versioni più recenti di MySQL Workbench (la mia è la 6.3) non hanno l'opzione "Modifica dati tabella".
JonP

6

Passando il mouse sull'icona "sola lettura" in mysql workbench viene visualizzato un suggerimento che spiega perché non può essere modificato. Nel mio caso è stato detto che è possibile modificare solo le tabelle con chiavi primarie o colonne univoche non annullabili.


dov'è questa icona di cui parli?
Brad Kent

1
rispondendomi: è sotto ea destra dei risultati su workbench 6.3
Brad Kent

3

In MySQL Workbench è necessario un INDICE da modificare, non è necessario che sia PK (sebbene anche l'aggiunta di un PK sia una soluzione).

Puoi creare un INDICE normale o un INDICE composto. Questo è tutto ciò di cui MySQL WB ha bisogno per correggere la cosa di sola lettura (ho v. 6.2 con MariaDB v. 10.1.4):

Basta fare clic con il pulsante destro del mouse sulla tabella, selezionare "Modifica tabella ..." quindi andare alla scheda "Indici". Nel riquadro sinistro metti un nome personalizzato per il tuo indice e nel riquadro centrale seleziona uno (assicurati che il valore sia unico) o più campi (assicurati solo che la combinazione sia unica)


3

Stavo riscontrando il problema di sola lettura anche quando stavo selezionando la chiave primaria. Alla fine ho capito che era un problema di rivestimento. Apparentemente la colonna PK deve avere lo stesso formato definito nella tabella. utilizzando: workbench 6.3 su Windows

Sola lettura

SELEZIONA leadid, nome, cognome, datecreated FROM lead;

Modifica consentita

SELEZIONA LeadID, nome, cognome, datecreated FROM lead;


Questa dovrebbe essere la risposta accettata.
Federico Alvarez

1

Secondo questo bug , il problema è stato risolto in Workbench 5.2.38 per alcune persone e forse 5.2.39 per altri: puoi eseguire l' aggiornamento alla versione più recente (5.2.40)?

In alternativa, è possibile aggirare con:

SELECT *,'' FROM my_table

Grazie per la risposta così rapida .. L'alternativa SELECT non funziona .. Ma posso aggiornare .. Aggiornerò e controllerò .. Grazie mille eggyal ...
EscalinNancy

@EscalinNancy: un'altra persona in quella segnalazione di bug ha commentato che una soluzione alternativa è utilizzare una funzione, ad es SELECT *, CONCAT('','') FROM my_table. Forse funzionerà per te?
eggyal

No .. non funziona .. Ricevo concat (''. '') Come un'altra colonna nel set di risultati ma i dati sono ancora di sola lettura .. Ora sto aggiornando WB
EscalinNancy

@EscalinNancy: Mi dispiace sentirlo :( È possibile che qualcun altro qui abbia un'idea più chiara di quale sia il problema - ma è più probabile che vedranno questa domanda se non
accetti la

È lo stesso caso in 5.2.44. Il database è produttivo e funziona bene nella versione precedente di workbench.
Earth Engine

0

Guidato dal post di Manitoba, ho trovato un'altra soluzione. In sintesi, le soluzioni sono:

  1. Con un comando USE

    USE mydb;
    SELECT * FROM mytable
    
  2. Con un prefisso schema esplicito:

    SELECT * FROM mydb.mytable
    
  3. GUI

    Nel riquadro "SCHEMA" del browser degli oggetti, tutte le icone del database non vengono inizialmente evidenziate se si verifica lo stesso problema. Quindi puoi fare clic con il pulsante destro del mouse sull'icona del database che desideri impostare come predefinita, selezionare "Imposta come schema predefinito".


0

1.) Devi rendere unica la chiave primaria, quindi dovresti essere in grado di modificare.

fai clic con il pulsante destro del mouse sulla tua tabella negli schemi "blu" -> ALTER TABLE, cerca la tua chiave primert (PK), quindi seleziona la casella di controllo UN, l'IA dovrebbe già essere selezionata. Dopodiché basta applicare e dovresti essere in grado di modificare i dati della tabella.

2.) È inoltre necessario includere la chiave primaria I nell'istruzione select

Nr 1 non è realmente necessario, ma una buona pratica.


0

Se la tua query ha dei JOIN, Mysql Workbench non ti permetterà di alterare la tabella, anche se i risultati provengono tutti da una singola tabella.

Ad esempio, la seguente query

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

non ti consentirà di modificare i risultati o aggiungere righe, anche se i risultati sono limitati a una tabella. Devi fare specificamente qualcosa come:

SELECT * FROM users WHERE id=1012;

e quindi puoi modificare la riga e aggiungere righe alla tabella.


Non capisco perché la prima query non funziona, ma almeno la seguente query funziona. Potresti modificare la seguente query funziona. SELECT u.* FROM users u WHERE u.id IN (SELECT user_id FROM passwords WHERE p.password IS NULL);
twk

0

inserisci qui la descrizione dell'immagine

Deseleziona il segno di spunta, abiliterà la modifica della griglia


0

MySQL verrà eseguito in modalità di sola lettura quando si recupera unendo due tabelle e le colonne di due tabelle sono incluse nel risultato. Quindi non puoi aggiornare direttamente i valori.


0

Sì, ho scoperto che anche MySQL non può modificare le tabelle dei risultati. Di solito le tabelle dei risultati che si uniscono ad altre tabelle non hanno chiavi primarie. Ho sentito altri suggerire di inserire la tabella dei risultati in un'altra tabella, ma la soluzione migliore è usare Dbeaver che può modificare le tabelle dei risultati.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.