Данные таблицы редактирования MySQL Workbench доступны только для чтения

87

При попытке изменить данные таблицы в MySQL Workbench 5.2.37 он находится в режиме только для чтения.

Его можно редактировать, только если у таблицы есть первичный ключ.

Есть ли какое-нибудь исправление для работы с таблицей без первичного ключа?

благодаря

В качестве одного из предложений я попробовал обновить WB 5.2.40. Но все же эта проблема существует .. Может ли кто-нибудь помочь, пожалуйста ..

ЭскалинНэнси
источник
Ничего из предложенного вопроса не работает. Я не могу добавить столбец, а затем удалить его. Теперь мой выбор - перейти на phpMyadmin.
ophidion
Требуется ПК, вот соответствующий FAQ - dev.mysql.com/doc/workbench/en/…
Philip Olson
Возможно, актуальная ошибка MySQL Workbench для людей, нашедших эту ветку с помощью веб-поиска: таблицы результатов представлений не редактируются . Обратите внимание, что эта ошибка относится только к представлениям, которые удовлетворяют всем другим ограничениям, необходимым для « обновляемости », и могут быть изменены с помощью простых запросов SQL.
TheDudeAbides

Ответы:

82

Я предполагаю, что у таблицы есть первичный ключ. Сначала попробуйте запустить команду разблокировки таблиц, чтобы увидеть, исправляет ли это ее.

Если ничего не помогает, вы можете изменить таблицу, чтобы создать новый столбец первичного ключа с автоматическим приращением, и это должно исправить это. Когда вы закончите, вы сможете удалить столбец без каких-либо проблем.

Как всегда, вы хотите сделать резервную копию, прежде чем менять таблицы. :)

Примечание. Инструментальные средства MySQL не могут работать без первичного ключа, если это ваша проблема. Однако, если у вас много таблиц, вы можете установить оба столбца в качестве первичных ключей, что позволит вам редактировать данные.

Томас Б.
источник
6
На самом деле моя проблема в том, что я не хочу иметь первичный ключ в моей таблице. См. Другой ответ на этот вопрос.
EscalinNancy 01
2
Я не думаю, что то, что вы делаете, возможно в рабочей среде MYSQL, поскольку программе нужен первичный ключ, чтобы указать, какую строку вы хотите редактировать.
Thomas B
Оки, спасибо, Томас. Я включил первичный ключ в свои таблицы.
EscalinNancy
Я использовал DBeaver и столкнулся с той же проблемой. Отключение и повторное подключение решило это!
lafleur
32

если для таблицы не определен первичный ключ или уникальный не допускающий значения NULL, то рабочая среда MySql не сможет редактировать данные.

Тарун Сингхал
источник
Думаю, для этого нет решения.
14

Если вы установите схему по умолчанию для подключения к БД, тогда Select будет работать в режиме только для чтения, пока вы не установите явно свою схему

USE mydb;
SELECT * FROM mytable

это также будет работать в режиме редактирования:

SELECT * FROM mydb.mytable 

(MySql 5.2.42 / MacOsX)

Надеюсь, это поможет.

Манитоба
источник
9

Это известное ограничение в MySQLWorkbench (вы не можете редактировать таблицу без PK):

Чтобы отредактировать таблицу:

Метод 1: (метод не работает в некоторых случаях)
щелкните правой кнопкой мыши таблицу в обозревателе объектов и выберите оттуда параметр «Изменить данные таблицы».

Метод 2:
Я бы предпочел вместо этого добавить первичный ключ:

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

и вы можете сначала удалить существующие строки:

Truncate table your_table_name
ГорвГойл
источник
1
Более поздние версии MySQL Workbench (моя 6.3) не имеют опции «Редактировать данные таблицы».
JonP
6

При наведении курсора на значок «только для чтения» в рабочей среде mysql отображается всплывающая подсказка, объясняющая, почему ее нельзя редактировать. В моем случае было сказано, что можно редактировать только таблицы с первичными ключами или уникальными столбцами, не допускающими значения NULL.

Тарун Гарг
источник
где этот значок вы говорите?
Брэд Кент,
1
Отвечаю сам: он внизу и справа от результатов на верстаке 6.3
Брэд Кент
3

В MySQL Workbench вам нужен ИНДЕКС для редактирования, не обязательно, чтобы он был PK (хотя добавление PK также является решением).

Вы можете сделать обычный ИНДЕКС или составной ИНДЕКС. Это все, что нужно MySQL WB, чтобы исправить ошибку только для чтения (у меня v. 6.2 с MariaDB v. 10.1.4):

Просто щелкните таблицу правой кнопкой мыши, выберите «Изменить таблицу ...», затем перейдите на вкладку «Индексы». На левой панели введите собственное имя для вашего индекса, а на средней панели отметьте одно (убедитесь, что значение будет уникальным) или несколько полей (просто убедитесь, что комбинация уникальна)

Aesede
источник
3

У меня возникала проблема только для чтения, даже когда я выбирал первичный ключ. В конце концов я понял, что это проблема с корпусом. Очевидно, столбец PK должен иметь такой же корпус, как определено в таблице. использование: Workbench 6.3 в Windows

Только чтение

ВЫБЕРИТЕ leadid, firstname, lastname, datecreated FROM lead;

Разрешено редактировать

ВЫБЕРИТЕ LeadID, имя, фамилию, дату создания ИЗ лида;

Quad9x
источник
Это должен быть принятый ответ.
Федерико Альварес
1

Согласно этой ошибке , проблема была исправлена ​​в Workbench 5.2.38 для некоторых людей и, возможно, в 5.2.39 для других - можете ли вы выполнить обновление до последней версии (5.2.40)?

В качестве альтернативы можно использовать следующее:

SELECT *,'' FROM my_table
яичный
источник
Спасибо за такой быстрый ответ .. Альтернативный SELECT не работает .. Но я могу обновить .. Обновлю и проверим .. Большое спасибо, яйця ...
EscalinNancy
@EscalinNancy: Другой человек в этом отчете об ошибке прокомментировал, что альтернативный обходной путь - использовать функцию, например SELECT *, CONCAT('','') FROM my_table. Возможно, это сработает для вас?
eggyal
Нет .. это не работает .. Я получаю concat (''. '') В качестве еще одного столбца в наборе результатов, но данные по-прежнему доступны только для чтения .. Сейчас я
обновляю
@EscalinNancy: Мне жаль это слышать :( Возможно, кто-то здесь может иметь больше представления о том, в чем проблема, но более вероятно, что они увидят этот вопрос, если вы не
примете
То же самое и в 5.2.44. База данных является продуктивной и отлично работает в предыдущей версии workbench.
Earth Engine
0

Руководствуясь сообщением Манитобы, я нашел другое решение. Итак, решения следующие:

  1. С помощью команды USE

    USE mydb;
    SELECT * FROM mytable
    
  2. С явным префиксом схемы:

    SELECT * FROM mydb.mytable
    
  3. GUI

    На панели «SCHEMAS» обозревателя объектов все значки базы данных изначально не подсвечиваются, если у вас возникла такая же проблема. Таким образом, вы можете щелкнуть правой кнопкой мыши значок базы данных, которую вы хотите использовать по умолчанию, и выбрать «Установить как схему по умолчанию».

Земляной двигатель
источник
0

1.) Вы должны сделать первичный ключ уникальным, тогда вы сможете редактировать.

Щелкните правой кнопкой мыши по таблице в "синих" схемах -> ALTER TABLE, найдите свой ключ для начинающих (PK), затем просто установите флажок UN, AI уже должен быть отмечен. После этого просто примените, и вы сможете редактировать данные таблицы.

2.) Вам также необходимо включить первичный ключ в ваш оператор выбора

№ 1 на самом деле не нужен, но это хорошая практика.

Degar007
источник
0

Если в вашем запросе есть какие-либо соединения, Mysql Workbench не позволит вам изменить таблицу, даже если все ваши результаты взяты из одной таблицы.

Например, следующий запрос

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

не позволит вам редактировать результаты или добавлять строки, даже если результаты ограничены одной таблицей. Вы должны сделать что-то вроде:

SELECT * FROM users WHERE id=1012;

а затем вы можете редактировать строку и добавлять строки в таблицу.

Кит Тайлер
источник
Я не понимаю, почему первый запрос не работает, но, по крайней мере, следующий запрос работает. Вы можете отредактировать следующий запрос. SELECT u.* FROM users u WHERE u.id IN (SELECT user_id FROM passwords WHERE p.password IS NULL);
twk
0

введите описание изображения здесь

Снимите отмеченную галочку, это позволит редактировать сетку

Devansdev
источник
0

MySQL будет работать в режиме только для чтения, когда вы выполняете выборку путем объединения двух таблиц, и столбцы из двух таблиц включаются в результат. Тогда вы не сможете напрямую обновить значения.

Винджамури Сатья Кришна
источник
0

Да, я обнаружил, что MySQL также не может редактировать таблицы результатов. Обычно таблицы результатов, соединяющие другие таблицы, не имеют первичных ключей. Я слышал, что другие предлагали поместить таблицу результатов в другую таблицу, но лучшим решением является использование Dbeaver, который может редактировать таблицы результатов.

Как
источник