Добавление иностранных ключей в MariaDB

0

Я, ребята,

У меня есть две таблицы:

Таблица "_config":

Изображение 174551


Таблица "_usuarios":

Изображение 174551 И когда я пытаюсь добавить внешний ключ:

ALTER TABLE '_config' ADD CONSTRAINT '_config__entitycreateuser_fk' 
  FOREIGN KEY ('_EntityCreateUser') 
    REFERENCES '_usuarios'('UsuarioId') 
      ON DELETE CASCADE ON UPDATE SET NULL

Я получаю эту ошибку:

Ошибка SQL (1005): невозможно создать таблицу "имя_базы". '# Sql-14a4_3' (errno: 121 "Дублировать ключ при записи или обновлении)

Я пытаюсь установить FOREIGN_KEY_CHECKS на 0, но возвращает:

Ошибка SQL (1825) Не удалось добавить ограничение внешнего ключа в таблицу "_config". Неправильные параметры в ограничении FOREIGN KEY 'databasename/_config__entitycreateuser_fk' º Все таблицы пусты

Теги:
mariadb
foreign-keys

1 ответ

2

Убедитесь, что имя для вашего внешнего ключа уникально для базы данных

SELECT 
  constraint_name,
  table_name
FROM 
  information_schema.table_constraints 
WHERE 
  constraint_type = 'FOREIGN KEY' 
  AND table_schema = DATABASE()
  AND constraint_name = '_config__entitycreateuser_fk'

Это одна из самых распространенных исправлений.

Открыть поисковую версию.

SELECT 
  constraint_name,
  table_name
FROM 
  information_schema.table_constraints 
WHERE 
  constraint_type = 'FOREIGN KEY' 
  AND table_schema = DATABASE()
ORDER BY constraint_name ASC 

В ответ на ваш комментарий я снова редактирую свой ответ.

Дважды проверьте, что таблицы, о которых идет речь, _config и _usuarios не разбиты на разделы. InnoDB имеет ограничения на ограничения FK для секционированных таблиц. Вы должны иметь возможность ознакомиться с особенностями руководства.

В более полезной ноте попробуйте запустить этот SHOW ENGINE innodb STATUS после попытки снова добавить ограничение FK. Он покажет вам детали ошибки.

Теперь я думаю, что ваша проблема ...ON UPDATE SET NULL. Поскольку вы пытаетесь установить SET NULL в столбец _usuarios.UsuarioId который, как представляется, является IDENTITY вашей таблицы. Будучи IDENTITY автоматически устанавливается столбец NOT NULLABLE

  • 0
    Не найдено. 0 результатов
  • 0
    Я разместил открытую поисковую версию в своем ответе. Просто убедитесь, что его нет в этом списке. Вы случайно используете связанные базы данных?
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню