MySQL Error Code 1215: Невозможно добавить ограничение внешнего ключа в ALTER TABLE: Mysql

Я хочу добавить ограничение внешнего ключа в мои существующие таблицы (тип InnoDB)
У меня есть две таблицы, перечисленные ниже:

tbl_users : [ user_id(INT,AUTO_INCREMENT), user_name,--- etc]
tbl_users_meta : [ user_meta_id(INT,AUTO_INCREMENT), user_id(INT),--- etc]

Я уже создал индексИдентификатор пользователя‘на’tbl_users_meta‘ перечислено ниже :

введите описание изображения здесь

Вот мой запрос, но я получаю (MySQL Error Code 1215:) каждый раз. В чем проблема, я могу получить его?

ALTER TABLE `tbl_users_meta`
ADD  CONSTRAINT `fk users user_id`
FOREIGN KEY (`user_id`) REFERENCES
`sanskrut`.`tbl_users`(`user_id`)
ON DELETE NO ACTION ON UPDATE CASCADE;

1

Решение

ПОПРОБУЙТЕ тот же запрос, который вы написали с небольшой модификацией:

ALTER IGNORE TABLE `tbl_users_meta`
ADD  CONSTRAINT `fk users user_id`
FOREIGN KEY (`user_id`) REFERENCES
`sanskrut`.`tbl_users`(`user_id`)
ON DELETE NO ACTION ON UPDATE CASCADE;

Надеюсь, это сработает

0

Другие решения

Я не вижу ничего плохого в том, что вы написали, поэтому, должно быть, что-то, что вы не опубликовали, влияет на проблему. Например, в версии MySQL 5.5.44 я могу успешно выполнить следующее:

CREATE DATABASE sanskrut;
USE sanskrut;
CREATE TABLE tbl_users (user_id INT AUTO_INCREMENT PRIMARY KEY, user_name VARCHAR(50));
CREATE TABLE tbl_users_meta (user_meta_id INT AUTO_INCREMENT PRIMARY KEY, user_id INT);
CREATE INDEX user_id ON tbl_users_meta (user_id);
ALTER TABLE `tbl_users_meta`
ADD  CONSTRAINT `fk users user_id`
FOREIGN KEY (`user_id`) REFERENCES
`sanskrut`.`tbl_users`(`user_id`)
ON DELETE NO ACTION ON UPDATE CASCADE;

…которая заканчивается вашим точным изложением проблемы, копируется и вставляется, и работает просто отлично.

Как я уже упоминал в комментариях, я подозреваю, что отсутствует индекс или, возможно, несоответствие типов данных. Возможно, вам будет полезно добавить вывод:

DESC tbl_users;
DESC tbl_users_meta;
SHOW indexes FROM tbl_users;
SHOW indexes FROM tbl_users_meta;

…на ваш вопрос.

0

По вопросам рекламы [email protected]