Подтвердить что ты не робот

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

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

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

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

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

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

Я решил это с помощью этого решения на одной из моих таблиц.

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

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

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

4b9b3361

Ответ 1

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

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

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

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

enter image description here

Ответ 2

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

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

Ответ 3

Мое дело другое. Эта проблема специфична только для PHPMyAdmin. Я загрузил пару других инструментов администратора (Adminer, MySQLWorkbench, HeidiSQL и т.д.), И тот же db отлично работает во всех этих файлах.

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

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

Ответ 4

Просто создайте новый столбец, установите 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!

Ответ 5

Легкое исправление этого будет идти на вкладку SQL и просто просто вставить код

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

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

Ответ 6

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

Ответ 7

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

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

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

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

Ответ 8

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

Ответ 9

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

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

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

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

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

Ответ 10

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

Ответ 11

Я столкнулся с той же проблемой, когда я запускаю запрос SELECT с определенными столбцами, хотя один из столбцов является основным в таблице. Я пытался получить выборочные записи с выборочными столбцами в стандартной таблице сообщений "posts". Идентификатор столбца уже является первичным и уникальным.

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

Мой PMA - это 4.3.8. Дайте мне знать, если это поможет.

Ответ 12

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

ALTER TABLE 'table name'
ADD COLUMN 'id' INT NOT NULL AUTO_INCREMENT,
ADD PRIMARY KEY ('id');

Ответ 13

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

Ответ 14

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

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

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

Ответ 15

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