Ошибка отсутствует индекс в строке

I need to create the database schema and include it in my software requirements specification for my school project, however, when I try to create a relationship between 2 tables, I get Error: Missing index on column(s).

asked Mar 4, 2018 at 10:41

Onyx's user avatar

2

I think @HazarathChillara has this right; you need to create primary, unique, or index keys.

You said every table has an primary key, but did you make each foreign and referenced key an index as well? It sounds like you neglected to properly set up your table structure; I only get the error when I don’t have a primary key or index on the particular columns I’m working with.

«MySQL requires indexes on foreign keys and referenced keys so that foreign key checks can be fast and not require a table scan»

You can just put an INDEX on the foreign key (often my referenced key is a primary key anyway, so I don’t need any additional key on that column).

answered Mar 13, 2018 at 13:43

Isaac Bennetch's user avatar

Isaac BennetchIsaac Bennetch

11.7k2 gold badges32 silver badges43 bronze badges

As Usman Khan said you have to go to the structure tab of the particular table and clicked on more options and select ‘INDEX’ for the foreign key.
the below image will help you how to do it image

Josef's user avatar

Josef

2,7792 gold badges22 silver badges23 bronze badges

answered May 9, 2021 at 7:14

Nethmi Perera's user avatar

I think i have another simple solve,
thing is, phpMyAdmin wont allow the addition of foreign keys to an already available data entry, so here is the my simple solve,

1. ensure to backup your database
2. confirm that your data was backed-up securely, recommended Offline backups
4. delete all data entries in all tables that will be part of the new relationship.
5. now Create the relevant relationships.
6. be sure you have created all required and preferred relations to avoid the need to 
    export data again 

answered May 20, 2021 at 13:46

Aphiwe Mdluli's user avatar

1

mysql

  • MySQL

В чём суть этой проблемы?

При создании ссылки выдает ошибку: отсутствует индекс в столбце. Что не так?
Пытаюсь привязать id таблицы users и user_id таблицы calculation. 5ea15d535c4f7061593209.png


  • Вопрос задан

    более трёх лет назад

  • 131 просмотр



2

комментария

  • мой вам совет, читайте документацию


Решения вопроса 1

В общем. Нужно-было просто добавить индексированный ключ и вуаля


Комментировать

Пригласить эксперта


Похожие вопросы


  • Показать ещё
    Загружается…

10 июн. 2023, в 01:43

6500 руб./за проект

10 июн. 2023, в 00:17

5000 руб./за проект

09 июн. 2023, в 23:05

80000 руб./за проект

Минуточку внимания

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

2 ответа

Лучший ответ

Я думаю, что @HazarathChillara имеет на это право; вам необходимо создать первичный, уникальный или индексный ключи.

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

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

Вы можете просто поместить ИНДЕКС на внешний ключ (часто мой ссылочный ключ в любом случае является первичным ключом, поэтому мне не нужен дополнительный ключ в этом столбце).


8

Isaac Bennetch
13 Мар 2018 в 13:43

Эта ошибка появляется только в том случае, если вы пренебрегаете структурой таблицы. Убедитесь, что вы также проиндексировали внешний ключ. вы можете увидеть, что я отметил, как я могу выбрать свой внешний ключ в качестве индекса. На этом изображении я индексирую выбранный , ‘sr’ мой внешний ключ


2

usman khan
10 Сен 2018 в 07:06

Я создаю 2 таблицы в своей базе данных:

DROP TABLE IF EXISTS `med_pharmacy`;
CREATE TABLE IF NOT EXISTS `med_pharmacy` (
  `med_pharmacy_id` int(11) NOT NULL AUTO_INCREMENT,
  `med_id` int(11) NOT NULL,
  `med_barcode` varchar(45) DEFAULT NULL,
  `med_received` date DEFAULT NULL,
  `med_expiry` date DEFAULT NULL,
  `med_tablet` int(11) DEFAULT NULL,
  `med_pill` int(11) DEFAULT NULL,
  `clinic_id` varchar(45) DEFAULT NULL,
  PRIMARY KEY (`med_pharmacy_id`),
  KEY `fk_med_pharmacy_medication1_idx` (`med_id`)
) ENGINE=InnoDB AUTO_INCREMENT=1261 DEFAULT CHARSET=utf8mb4;

И:

DROP TABLE IF EXISTS `medication`;

CREATE TABLE `medication` (
  `med_id` int(11) NOT NULL,
  `med_name` varchar(75) NOT NULL,
  `med_date_added` date DEFAULT NULL,
  `clinic_id` varchar(45) DEFAULT NULL,
  `med_type` varchar(15) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

И когда я запускаю запросы в wamp, я получил эту ошибку:

SQL-запрос:

ALTER TABLE `med_pharmacy`   
ADD CONSTRAINT `fk_med_pharmacy_medication1` 
FOREIGN KEY (`med_id`) 
REFERENCES
`medication` (`med_id`) ON DELETE CASCADE ON UPDATE CASCADE MySQL

сказал: Документация

# 1822 — Не удалось добавить константу внешнего ключа. Отсутствует индекс для ограничения ‘fk_med_pharmacy_medication1’ в указанной таблице ‘лекарство’

Таблицы уже существуют, но я изменил одно поле.

Вопрос:

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

Notice in ./libraries/structure.lib.php#1881
Undefined index: Rows

Backtrace

./libraries/structure.lib.php#2382: getHtmlForRowStatsTable(
array,
NULL,
boolean false,
boolean false,
string '',
string '',
)
./libraries/display_structure.inc.php#263: PMA_getHtmlForDisplayTableStats(
string '',
NULL,
NULL,
boolean false,
NULL,
string '?db=btc_orders&table=Rep&token=09aa3ad5cb85e33dad2a2098ed2874e2&goto=tbl_structure.php&back=tbl_structure.php',
NULL,
)
./tbl_structure.php#163: require_once(./libraries/display_structure.inc.php)

Это происходит только в одной Datadase в PHPMyAdmin без каких-либо ошибок, возникающих на любых других.

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

Лучший ответ:

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

Возможно, вам также будет интересно:

  • Ошибка отсутствует индекс в столбце mysql
  • Ошибка отправления сообщения mozilla thunderbird smtp
  • Ошибка отсутствует инвойс вайлдберриз что это
  • Ошибка отправления почты почтовый сервер отправил некорректное приветствие
  • Ошибка отсутствует или поврежден пакет windows script

  • Понравилась статья? Поделить с друзьями:
    0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии