Дані редагування таблиці MySQL Workbench Дані доступні лише для читання


84

При спробі редагувати дані таблиці в MySQL Workbench 5.2.37, це лише в режимі читання.

Його можна редагувати, лише якщо таблиця має первинний ключ.

Чи є виправлення для роботи з таблицею без первинного ключа ??

Дякую

В якості однієї з пропозицій я спробував оновити WB 5.2.40. Але все-таки це питання існує .. Чи може хтось допомогти, будь ласка ..


Жодне із запропонованих питань не працює. Я не можу додати стовпець, а потім видалити його. Перехід до phpMyadmin - це мій вибір зараз.
ophidion

Необхідний ПК, ось відповідні поширені запитання - dev.mysql.com/doc/workbench/en/…
Філіп Олсон

Можливо, доречна помилка MySQL Workbench для людей, які знайшли цю тему за допомогою веб-пошуку: сітки результатів переглядів не можна редагувати . Зауважте, що ця помилка стосується лише подань, які відповідають всім іншим обмеженням, необхідним для " оновлення ", і можуть бути змінені за допомогою прямих запитів SQL.
TheDudeAbides

Відповіді:


77

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

Якщо все інше не вдається, ви можете змінити таблицю, щоб створити новий стовпець первинного ключа з автоматичним збільшенням, і це, сподіваємось, це має виправити. Закінчивши, ви зможете видалити стовпець без будь-яких проблем.

Як завжди, ви хочете зробити резервну копію, перш ніж змінювати таблиці навколо. :)

Примітка: MySQL Workbench не може працювати без первинного ключа, якщо це ваша проблема. Однак якщо у вас є таблиця багато-багато, ви можете встановити обидва стовпці як первинні ключі, що дозволить вам редагувати дані.


5
Насправді моя проблема полягає в тому, що я не хочу мати первинний ключ у своїй таблиці. Будь ласка, зверніться до іншої відповіді на це запитання.
EscalinNancy

2
Я не думаю, що те, що ви робите, можливо у робочому середовищі MYSQL, оскільки програмі потрібен первинний ключ, щоб визначити, який рядок ви хочете редагувати.
Thomas B

Окі, дякую Томасе. Я включив первинний ключ у свої таблиці.
EscalinNancy

Я використовував DBeaver і стикався з тією ж проблемою. Відключення та підключення знову вирішили це!
lafleur

31

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


Я думаю, для цього немає рішення.

14

Якщо ви встановите схему за замовчуванням для вашого підключення до DB, тоді функція 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 показує підказку, яка пояснює, чому її не можна редагувати. У моєму випадку там сказано, що редагувати можна лише таблиці з первинними ключами або унікальні ненульовані стовпці.


де ця ікона, про яку ви говорите?
Бред Кент

1
відповідаючи собі: це внизу та праворуч від результатів на верстаті 6.3
Бред Кент

3

У MySQL Workbench вам потрібен INDEX для редагування, не потрібно, щоб це був PK (хоча додавання PK - це також рішення).

Ви можете зробити звичайний ІНДЕКС або складений ІНДЕКС. Це все, що потрібно MySQL WB, щоб виправити річ лише для читання (у мене версія 6.2 з MariaDB версії 10.1.4):

Просто клацніть правою кнопкою миші таблицю, виберіть "Змінити таблицю ...", а потім перейдіть на вкладку "Індекси". На лівій панелі поставте власне ім'я для вашого індексу, а в середній - одне (переконайтеся, що vale буде унікальним) або більше полів (просто переконайтеся, що комбінація унікальна)


3

Я отримував проблему лише для читання, навіть коли вибирав первинний ключ. Врешті-решт я зрозумів, що це проблема корпусу. Очевидно, стовпець PK повинен бути розміщений так само, як визначено в таблиці. за допомогою: верстака 6.3 на вікнах

Лише для читання

ВИБЕРІТЬ ідентифікатор імені, ім’я, прізвище, дату, створену ІЗ ​​свинцю;

Дозволено редагувати

ВИБЕРІТЬ ІДЕНТИФІКАТ, ім’я, прізвище, дату, створену ВІД свинцю;


1

Згідно з цією помилкою , проблема була виправлена ​​в Workbench 5.2.38 для деяких людей, а можливо, для інших - 5.2.39 - чи можете ви оновити її до останньої версії (5.2.40)?

Крім того, можна обійти:

SELECT *,'' FROM my_table

Дякую за таку швидку відповідь .. Альтернативний SELECT не працює .. Але я можу оновити .. Буду оновити та перевірити .. Велике спасибі eggyal ...
EscalinNancy

@EscalinNancy: Інша особа у цьому звіті про помилки прокоментувала, що альтернативним способом вирішення проблеми є використання функції, наприклад SELECT *, CONCAT('','') FROM my_table. Можливо, це вам підійде?
eggyal

Ні .. його не працює .. Я отримую concat (''. '') Як інший стовпець у наборі результатів, але дані все ще є лише для читання .. Зараз я оновлюю WB
EscalinNancy

@EscalinNancy: Мені шкода це чути :( Можливо, хтось тут, мабуть, більше уявляє, в чому проблема - але, швидше за все, вони побачать це питання, якщо ви не
приймете

Той самий випадок у 5.2.44. База даних є продуктивною і чудово працює в попередній версії верстака.
Earth Engine

0

Керуючись дописом Манітоби, я знайшов інше рішення. Підсумовуючи, рішення є:

  1. За допомогою команди USE

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

    SELECT * FROM mydb.mytable
    
  3. Графічний інтерфейс

    На панелі «СХЕМИ» браузера об’єктів спочатку всі піктограми бази даних не виділяються, якщо у вас однакові проблеми. Тож ви можете клацнути правою кнопкою миші на піктограмі бази даних, яку хочете зробити за замовчуванням, вибрати «Встановити як схему за замовчуванням».


0

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

клацніть правою кнопкою миші на вашій таблиці в "синіх" схемах -> ЗМІНИТЬ ТАБЛИЦЮ, знайдіть свій ключ праймеру (ПК), а потім просто встановіть прапорець ООН, ШІ вже повинен бути перевірений. Після цього просто подайте заявку, і ви зможете редагувати дані таблиці.

2.) Вам також потрібно включити базовий ключ I, який ви виберете

Nr 1 насправді не потрібен, але хороша практика.


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

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

Зніміть позначку з позначки, це дозволить редагувати сітку


0

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


0

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.