Решение SQL ошибки #1005 при создании таблицы InnoDB

Пройдите тест, узнайте какой профессии подходите

Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый ответ

Для решения проблемы с ошибкой MySQL 121, обязательно используйте уникальные имена для ограничений внешних ключей на уровне всей базы данных. Пример исправления:

SQL
Скопировать код
ALTER TABLE `insert_table_name` ADD CONSTRAINT `insert_unique_fk_name` FOREIGN KEY (`insert_column_name`) REFERENCES `another_table_name` (`another_column_name`);

Замените insert_table_name, insert_unique_fk_name, insert_column_name актуальными значениями и проверьте, чтобы insert_unique_fk_name было уникальным в контексте всей базы данных.

Кинга Идем в IT: пошаговый план для смены профессии

Визуализация

Представьте, что вы – художник, создающий шедевры живописи. Каждый из них требует уникальной подписи:

Markdown
Скопировать код
Создаём:
- Картина А 🎨 (Подпись: ✍️А)
- Картина В 🎨 (Подпись: ✍️В)

В мире SQL ситуация с ошибкой errno: 121 обстоит следующим образом:

Markdown
Скопировать код
- Попытка подписать: ✍️А & ✍️А
- Ошибка: 🚫 Необходима уникальная подпись!

Метод решения — использование уникальных ограничений или ключей:

Markdown
Скопировать код
- Правильные подписи: ✍️А & ✍️В
- Итог: ✅ Два уникальных шедевра!

Важно помнить:

Markdown
Скопировать код
🎨 Каждой "таблице" или "шедевру" требуется своя уникальная ✍️ "подпись" или "ограничение".
🚫 Повторяющиеся подписи приводят к хаосу в галерее (вашей базе данных)!

Пошаговые инструкции по устранению ошибки errno: 121

Следуйте советам ниже, чтобы исправить ошибку MySQL 121.

План действий: Принципы именования ограничений

  • Стандарт и целостность: Используйте входящие в принятый стандарт префиксы, такие как fk_ для внешних ключей, pk_ для первичных и uq_ для уникальных индексов.
  • Контекст таблиц: Вставка названия таблицы в идентификатор ограничения повышает его узнаваемость.
  • Уникальность и последовательность: Добавьте номер-суффикс для ограничений одного типа на одной и той же таблице.
SQL
Скопировать код
# Пример уникального именования ограничения
ALTER TABLE `orders` ADD CONSTRAINT `fk_orders_customers_1` FOREIGN KEY (`customer_id`) REFERENCES `customers` (`id`);

Инструменты: Исследование и отладка

  • perror – решение проблем с ошибками: Команда perror помогает интерпретировать коды ошибок MySQL. Пример использования: perror 121.
Bash
Скопировать код
# Пример использования perror для диагностики
perror 121
  • Поиск дубликатов: Используйте обзор схемы или таблицу information_schema, чтобы выявить дубликаты ограничений.

Предотвращение ошибок: Распространённые случаи

  • Дублирование ключей: Ограничения могут дублироваться при клонировании таблиц или миграциях.
SQL
Скопировать код
# Проверка наличия дубликатов ограничений
SELECT CONSTRAINT_NAME, TABLE_NAME 
FROM information_schema.KEY_COLUMN_USAGE 
WHERE CONSTRAINT_SCHEMA = 'your_database_name'
ORDER BY CONSTRAINT_NAME;
  • Коллизия наименований при импорте: Во время импорта может возникнуть совпадение имен ограничений, поэтому следите за их уникальностью и при необходимости меняйте названия.

Прогнозирование и тестирование

  • Песочница: Прежде чем реализовывать изменения в рабочем окружении, выполните тесты в отдельной зоне, чтобы исключить возможность ошибки errno: 121 на рабочей базе данных.

Полезные материалы

  1. MySQL :: Справочник по ошибкам MySQL 8.0 :: 2 Справочник по сообщениям серверных ошибок — подробное обсуждение кодов ошибок MySQL, включая errno: 121.
  2. wpf – C# binding received data – Stack Overflow — практический пример, демонстрирующий возникновение ошибки MySQL errno: 121.
  3. Справочник по кодам ошибок MariaDB – База знаний MariaDB — обзор кодов ошибок MariaDB, к которым относится и errno: 121.
  4. MySQL :: Руководство по MySQL 8.0 :: 15.1.15 Создание индекса — подробное руководство по созданию индексов, связанных с ошибка errno: 121.
  5. MySQL :: Руководство по MySQL 8.0 :: 11.2 Именование объектов — правила именования объектов баз данных в MySQL, которые помогают избежать ошибки errno: 121.
  6. MySQL :: Руководство по MySQL 8.0 :: 15.1.20.5 Ограничения внешнего ключа — основные принципы работы с ограничениями внешних ключей и частые причины возникновения ошибки errno: 121.