it-swarm.com.ru

Решение. Эта таблица не содержит уникальный столбец. Функции редактирования сетки, флажков, редактирования, копирования и удаления недоступны

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

Ошибка, сгенерированная в phpMyAdmin:

«Эта таблица не содержит уникальный столбец. Функции редактирования сетки, флажков, редактирования, копирования и удаления недоступны».

Есть несколько рабочих решений в зависимости от вашего точного сценария.

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

Я решил это с этим решением на одной из моих таблиц.

В другой таблице было несколько значений AI int, которые были полем Primary, но было несколько значений одного и того же типа. 

Простым решением этой проблемы было добавление столбца в конец таблицы как Unique AI Int. По сути, все, что говорит MySQL, - это то, что ему нужно уникальное значение в каждой записи, чтобы различать строки.

Надеюсь, это было полезно.

54
OldWest

Я столкнулся с этой проблемой.

Причина в вашей таблице нет поля первичного ключа .

И у меня есть простое решение: установить поле первичного ключа для конкретного поля, которое соответствует вашей бизнес-логике.

Например, у меня есть база данных thesis_db и поле thesis_id, я нажму кнопку Primary (значок ключа), чтобы установить thesis_id в поле первичного ключа:

enter image description here

35
foobarfuu

Это не ошибка. PhpMyAdmin просто сообщает вам, что в вашем наборе результатов нет столбца с уникальным идентификатором. В зависимости от типа отправленного вами запроса, это желаемое поведение.

Это не MySQL, который говорит, что ему нужен уникальный идентификатор, если любая комбинация столбцов в вашем наборе результатов является уникальной, значения этих столбцов могут использоваться в запросе UPDATE или DELETE. Это phpMyAdmin, который говорит, что у него недостаточно информации, чтобы предложить вам флажки и кнопки, которые вы обычно видите в наборе результатов с уникальным идентификатором.

20
dr fu manchu

У меня дело другое. Эта проблема относится только к PHPMyAdmin. Я скачал пару других инструментов администратора (Adminer, MySQLWorkbench, HeidiSQL и т.д.), И один и тот же БД прекрасно работает во всех этих.

У меня есть все индексы, первичный ключ и уникальные ключи, и я все еще получаю ошибку. Я получаю это после того, как я обновился до MySQL 5.6 (не сталкивался с тем же с предыдущими версиями). 

Оказывается, у PMA есть проблемы с именами таблиц в заглавной. PMA не может распознавать ключи с именами заглавных таблиц. Как только я изменил их на маленький (ALTER TABLE mytable ENGINE=INNODB - я использую INNODB - делает это для каждой таблицы, не меняя ничего другого), я смог получить доступ в обычном режиме. Я в системе Windows с UniformServer.

12
Ravi

Просто создайте новый столбец, установите для Name все, что вам нравится, установите для Type значение INT и установите флажок с надписью A_I.

 diagram Флажок A_I обозначает AUTO_INCREMENT, что по сути означает, что порядковые номера назначаются автоматически в этом новом столбце (см. Ниже). 

 column1 | column2 | id
-----------------------
 value   | value   | 1
-----------------------
 value   | value   | 2
-----------------------
 value   | value   | 3
-----------------------
 value   | value   | 4

Этот столбец по существу действует как ссылка для phpMyAdmin для удаления строк из. При необходимости нажмите на уникальную кнопку для этого нового столбца, хотя это произошло автоматически для меня. После выполнения вышеуказанных шагов у вас больше не должно появиться сообщение об ошибке, и должны появиться кнопки для редактирования строк в phpMyAdmin!

11
Isaac Adni

Это легко исправить, перейдя на вкладку SQL и просто вставив код 

ALTER TABLE `tablename`
ADD PRIMARY KEY (`id`);

Предполагая, что у вас есть строка с именем id.

2
Daniel Alsaker

В моем случае ошибка произошла в phpmyadmin версии 4.5.1, когда я установил lower_case_table_names = 2 и имел имя таблицы с заглавными буквами. В таблице был установлен первичный ключ с автоматическим приращением, но он все еще отображал ошибку. Проблема остановилась, когда я изменил имя таблицы на все строчные.

1
nonybrighto

Для меня это было решено путем реэкспорта данных из исходной БД-источника и последующего импорта в зеркальную БД.

0
Philip Drury

Этот вопрос помог мне определить проблему, почему phpMyAdmin отказал мне в grid-edit-etc. на некоторых столах. Я просто забыл объявить свой первичный ключ и наблюдал за ним в моем "Почему, черт возьми, эта таблица должна отличаться от ее соседей" процесс поиска решения ...

Я просто хотел отреагировать на следующее в OP самоответе: 

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

Простым решением проблемы было добавление столбца в конец стол как уникальный AI Int. В основном все, что MySQL говорит, это то, что ему нужен уникальное значение в каждой записи, чтобы дифференцировать строки.

На самом деле это был мой случай, но абсолютно не нужно добавлять какой-либо столбец: если ваш первичный ключ представляет собой комбинацию из 2 полей (например, таблица соединений во многих отношениях со многими), то просто объявите его так:
- eiter в phpyAdmin, просто введите «2» в «Создать индекс по [x] столбцам», затем выберите 2 столбца
- или ALTER TABLE mytable ADD PRIMARY KEY(mycol1,mycol2)

0
fpierrat

Я получил эту ошибку при попытке изменить сразу после запуска Query. Оказывается, после того, как я сделал вид из того же самого запроса, я смог изменить значения.

0
Ray Foss

Недавно у меня возникла та же проблема, и после поиска дубликатов я смог ее исправить, просто установив (пропустив) первичный ключ на столе. Надеюсь, что это может помочь 

0
Yuri

Я сталкиваюсь с той же проблемой всякий раз, когда я запускаю запрос SELECT с конкретными столбцами, хотя один из столбцов является первичным в таблице. Я пытался получить выборочные записи с выборочными столбцами в стандартной таблице «сообщений» WordPress. Столбец ID уже является первичным и уникальным.

Простое указание основного/уникального имени столбца не решит эту проблему. Вы должны указать полное имя столбца, например "posts.id" (tablename.columnname), которое говорит PMA о выборе определенного столбца и показывает редактирование и т.д.

Мой PMA составляет 4.3.8. Позвольте мне знать, если это помогает..

0
vinay samant

код, который работал для меня

ALTER TABLE `table name`
ADD COLUMN `id` INT NOT NULL AUTO_INCREMENT,
ADD PRIMARY KEY (`id`);
0
Oleg Abramov

Таким образом вы избавитесь от этого уведомления и сможете открывать эти ячейки для редактирования.

1) нажмите «СТРУКТУРА» 

2) перейдите к полю, которое вы хотите использовать в качестве первичного ключа (а это обычно 1-й ключ), а затем щелкните поля «PRIMARY» и «INDEX» для этого поля и примите всплывающий вопрос PHPMyadmin «OK». 

3) колодки в спину.

0
Average Joe

Добавление этого в файл config.inc.php работало для меня (в последней строке $ cfg):

$cfg['RowActionLinksWithoutUnique'] = 'true';

Файл должен находиться в папке phpMyAdmin на вашем локальном компьютере.

0
snubbus