Не могу редактировать строки: « Данное выделение не содержит уникального столбца.» Как быть?
Хостинг-провайдер сменил версию PhpMyAdmin на 4.3.9, и я столкнулся с тем, что не могу редактировать строки. Для некоторых таблиц появляется сообщение: "Данное выделение не содержит уникального столбца. Изменение сетки, выставление галочки, редактирование, копирование и удаление невозможно."
Ну да, не содержит, и что... Раньше без проблем редактировал такие таблицы. Как быть?
А зачем Вы это делаете и что в этих таблицах?
Просто ответ можно дать в нескольких вариантах и увы "серебряной пули" среди них нет.
Каждый из них создает другие проблемы.
внимательно думайте:
Почему в этой таблице нет первичного автоинкрементного ключа ? А если добавлю, что сломаться может ?
Можно на таблице создать (составной) уникальный ключ? Что от этого станет работать по другому ?
phpmyadmin обновляет записи при редактировании согласно уникальному primary key. Если у вас его нет то единственный способ - написать соответствующий SQL запрос. Но я бы наконец добавил это поле и больше не имел с этим проблем. Любую запись надо иметь возможность локализовать
Николай Чуприк, стало не через ж, а нормально. Все взрослые системы только так и поступают. Когда вы редактируете записи через клиент к бд то он просто за вас составляет запрос и отправляет его на выполнение. Если не было уникальности то у вас могли испортиться данные, которые вы не хотели редактировать
Иван Шумов, не понимаю. У меня представления о БД на уровне "домохозяйки". Вот типичный пример у меня (упрощаю, чтобы не углубляться в детали). Есть человек person, он может входить в разные группы group:
person | group
1 | 1
1 | 2
2 | 1
Зачем такой таблице ключ? Какие тут могут быть соображения из высоких материй? Типа идентифицировать строки по их содержимому неправильно? При одновременном изменении пользователями таблицы может возникнуть нежелательный результат?
Rsa97, Проблема от добавления первичного автоинкрементного ключа в чем ?
у вас есть таблица
товар,магазин,кол-во,цена
обновляется она каждый час по csv выгрузке
для быстроты обработки разработчик задействовал
insert on duplicate key update
после вашей правки сайт упадет. так как ключ увеличивается и при ветке update
Олег Муравейко, Для on duplicate key необходимо наличие какого-либо уникального ключа. Что в этой строке является уникальным полем? Товар? Так что мешает сделать его первичным ключом? Будет естественный, а не синтетический ключ.
Николай Чуприк, Делаете составной первичный ключ (person, group). Одновременно решается проблема с включением одного человека в одну группу несколько раз.
вот уже второй вариант решения проблемы. Но опять нюанс. Нужно понимать что лежит в таблице
как часто обновляются записи. И не будет ли все хуже работать от добавления ключа.
я в своем ответе . И писал. Решить проблему легко, но нужно глубоко понимать, что и где станет от этого работать по другому.