2016-11-23 4 views
1

Попытка вставить строку в MySQL с помощью PhpMyAdmin, и он терпит неудачу Мой с ошибкой:MySQL: Почему внешний ключ не работает?

#1452 - Cannot add or update a child row: a foreign key constraint fails (`staging`.`user_profiles`, CONSTRAINT `fk_user_profiles_users` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE ON UPDATE CASCADE) 

не могу понять, почему. Я создал проект базы данных в MySQL Workbench, и он работал над MySQL 5.7 в разработке и теперь не будет работать с Percona server 5.5. Где я НЕ смотрю ???

SQL Statement and Error

Foriegn key in phpMyAdmin

Это структура таблицы, который я создал в MySQL Workbench (черточки для заслоняя информации клиента = P):

DROP TABLE IF EXISTS `staging_-----------`.`users` ; 

CREATE TABLE IF NOT EXISTS `staging_-----------`.`users` (
    `id` INT NOT NULL AUTO_INCREMENT, 
    `email` VARCHAR(255) NOT NULL, 
    `password` VARCHAR(128) NOT NULL, 
    `role` ENUM('admin', 'vet', 'client') NOT NULL, 
    PRIMARY KEY (`id`)); 


DROP TABLE IF EXISTS `staging_-----------`.`user_profiles` ; 

CREATE TABLE IF NOT EXISTS `staging_-----------`.`user_profiles` (
    `user_id` INT NOT NULL, 
    `address_one` VARCHAR(255) NULL, 
    `address_two` VARCHAR(255) NULL, 
    `age` INT NULL, 
    `sex` ENUM('m', 'f') NULL, 
    `first_name` VARCHAR(45) NULL, 
    `last_name` VARCHAR(45) NULL, 
    `city` VARCHAR(45) NULL, 
    `state` VARCHAR(45) NULL, 
    `zip` VARCHAR(6) NULL, 
    `phone` VARCHAR(45) NULL, 
    `photo` VARCHAR(255) NULL, 
    PRIMARY KEY (`user_id`), 
    INDEX `fk_user_profiles_users2_idx` (`user_id` ASC), 
    CONSTRAINT `fk_user_profiles_users` 
    FOREIGN KEY (`user_id`) 
    REFERENCES `staging_-----------`.`users` (`id`) 
    ON DELETE CASCADE 
    ON UPDATE CASCADE) 
ENGINE = InnoDB; 

Я пытался получить мою работу код снова работает уже 2 дня, и нет любви. Что могло пойти не так? Большое вам спасибо за ваше время.

+0

Попытка сбросить мастер-таблицу, а ребенок/ссылки таблица все еще существует? – mishka

+0

Извините, SQL успешно удаляет/создает таблицы. Просто не могу вставить строку в 'user_profiles', используя существующий идентификатор из 'users'. –

ответ

0

Проверьте, существует ли значение, которое вы вставляете в user_id, существует в staging_-----------. users

Может быть, это проблема ....

+0

Значение действительно существует. . Значения строк, которые существуют в «постановке .----» «пользователей» являются ID: 1 электронная почта: [email protected] пароль: awdfesgr роли: администратор Я бы добавил скриншот из ' таблица пользователей, показывающая успешную строку, но моя репутация не позволит этого. –

+0

генерировать скрипты из двух таблиц, структуры и данных и загружать zip в ftp и публичную ссылку. –

+0

Большое вам спасибо! Я экспортировал таблицы и собирался их застегнуть после просеивания кода, и я заметил, что моя таблица «users» использовала MyISAM, а таблица «user_profiles» использовала InnoDB. Я изменил эти две вещи, и это работает! Большое вам спасибо за то, что вы привели меня к решению, я пробовал все крошечные вещи в мире. Я приму этот ответ! * луки мастер * –