mysql error 1452는 외래키 관련된 에러로 외래키 참조 테이블에 없는 값으로 삽입/수정 하려고 할 때 발생하는 에러로 알고있습니다.
그런데 저는 분명 있는 값을 넣고있는데 이 에러가 뜨고 있네요... 데이터 겨우 한 두개 넣고있는데 하루종일 씨름중입니다 ㅠㅠ
아래는 제가 사용한 쿼리입니다.
owner 가 부모 business 가 자식 테이블이며, business 테이블의 'owner_no' 컬럼이 외래키로 owner 테이블의 owner_no 컬럼을 참조합니다. 테이블 생성 쿼리는 workbench 자동완성 기능을 사용했습니다. 사용중인 DB는 5.1 버전으로 Index의 VISIBLE 기능이 없어 해당 부분만 삭제했습니다.
-- MySQL Script generated by MySQL Workbench
-- Tue Mar 26 12:51:34 2019
-- Model: New Model Version: 1.0
-- MySQL Workbench Forward Engineering
SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';
-- -----------------------------------------------------
-- Schema test
-- -----------------------------------------------------
DROP SCHEMA IF EXISTS `test` ;
-- -----------------------------------------------------
-- Schema test
-- -----------------------------------------------------
CREATE SCHEMA IF NOT EXISTS `test` DEFAULT CHARACTER SET utf8 ;
USE `test` ;
-- -----------------------------------------------------
-- Table `toast`.`business`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `test`.`business` (
`business_no` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`business_id` CHAR(12) NOT NULL,
`owner_no` INT UNSIGNED NOT NULL,
`create_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`business_no`),
INDEX `who_is_owner_idx` (`owner_no` ASC) ,
UNIQUE INDEX `business_id_UNIQUE` (`business_id` ASC) ,
CONSTRAINT `who_is_owner`
FOREIGN KEY (`owner_no`)
REFERENCES `test`.`owner` (`owner_no`)
ON DELETE NO ACTION
ON UPDATE CASCADE)
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `toast`.`owner`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `test`.`owner` (
`owner_no` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`owner_name` VARCHAR(10) NOT NULL,
`owner_id` VARCHAR(50) NOT NULL,
`owner_pw` CHAR(41) NOT NULL,
`create_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`owner_no`),
UNIQUE INDEX `owner_id_UNIQUE` (`owner_id` ASC) );
SET SQL_MODE=@OLD_SQL_MODE;
SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;
다음은 데이터 삽입 쿼리입니다.
INSERT INTO owner (
owner_name,
owner_id,
owner_pw
) VALUES(
'영희', -- owner_name
'owner_1', -- owner_id
password('1234qwer') -- owenr_pw
);
INSERT INTO business (
business_id,
owner_no
) VALUES (
'234-56-78901',
1
);
business의 owner_no 컬럼에 owner 테이블의 owner_no 값인 1을 넣었는데 에러가 발생하고 있습니다.
어디가 원인인지 전혀 모르겠네요... 도와주세요!