복붙노트

[SQL] SQLSTATE는 [23000] : 무결성 제약 조건 위반 : 1452 추가 또는 자식 행을 업데이트 할 수 없습니다가 : 외래 키 제약 조건이 실패

SQL

SQLSTATE는 [23000] : 무결성 제약 조건 위반 : 1452 추가 또는 자식 행을 업데이트 할 수 없습니다가 : 외래 키 제약 조건이 실패

내 의견 테이블에 값을 삽입하려고 내가 오류를 얻고있다. 그것의 I 추가 또는 업데이트 자식 행 수 없다는 난 아무 생각이 무슨 의미가 없다. 내 스키마는 다음과 같은 :

--
-- Baza danych: `koxu1996_test`
--

-- --------------------------------------------------------

--
-- Struktura tabeli dla tabeli `user`
--

CREATE TABLE IF NOT EXISTS `user` (
  `id` int(8) NOT NULL AUTO_INCREMENT,
  `username` varchar(32) COLLATE utf8_bin NOT NULL,
  `password` varchar(64) COLLATE utf8_bin NOT NULL,
  `password_real` char(32) COLLATE utf8_bin NOT NULL,
  `email` varchar(32) COLLATE utf8_bin NOT NULL,
  `code` char(8) COLLATE utf8_bin NOT NULL,
  `activated` enum('0','1') COLLATE utf8_bin NOT NULL DEFAULT '0',
  `activation_key` char(32) COLLATE utf8_bin NOT NULL,
  `reset_key` varchar(32) COLLATE utf8_bin NOT NULL,
  `name` varchar(32) COLLATE utf8_bin NOT NULL,
  `street` varchar(32) COLLATE utf8_bin NOT NULL,
  `house_number` varchar(32) COLLATE utf8_bin NOT NULL,
  `apartment_number` varchar(32) COLLATE utf8_bin NOT NULL,
  `city` varchar(32) COLLATE utf8_bin NOT NULL,
  `zip_code` varchar(32) COLLATE utf8_bin NOT NULL,
  `phone_number` varchar(16) COLLATE utf8_bin NOT NULL,
  `country` int(8) NOT NULL,
  `province` int(8) NOT NULL,
  `pesel` varchar(32) COLLATE utf8_bin NOT NULL,
  `register_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `authorised_time` datetime NOT NULL,
  `edit_time` datetime NOT NULL,
  `saldo` decimal(9,2) NOT NULL,
  `referer_id` int(8) NOT NULL,
  `level` int(8) NOT NULL,
  PRIMARY KEY (`id`),
  KEY `country` (`country`),
  KEY `province` (`province`),
  KEY `referer_id` (`referer_id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=83 ;

그리고 MySQL의 문은이 같은 모습에 뭔가를 시도하고있다 :

INSERT INTO `user` (`password`, `code`, `activation_key`, `reset_key`, `register_time`,                `edit_time`, `saldo`, `referer_id`, `level`) VALUES (:yp0, :yp1, :yp2, :yp3, NOW(), NOW(), :yp4, :yp5, :yp6). Bound with :yp0='fa1269ea0d8c8723b5734305e48f7d46', :yp1='F154', :yp2='adc53c85bb2982e4b719470d3c247973', :yp3='', :yp4='0', :yp5=0, :yp6=1

오류 나는이 같은 모습을 얻을 :

해결법

  1. ==============================

    1.그냥 단순히 삽입하는 테이블의 의견에 열 국가 값이 테이블 country_type에 존재하지 않거나 테이블 사용자에 국가 값을 삽입하지 않는 것을 의미한다. 마음에 곰 테이블 주석에 열 나라의 값은 테이블 country_type에 ID의 값에 달려있다.

    그냥 단순히 삽입하는 테이블의 의견에 열 국가 값이 테이블 country_type에 존재하지 않거나 테이블 사용자에 국가 값을 삽입하지 않는 것을 의미한다. 마음에 곰 테이블 주석에 열 나라의 값은 테이블 country_type에 ID의 값에 달려있다.

  2. ==============================

    2.이 테이블과 다른 테이블과 그 제약 조건을 위반하는 새 행 사이의 외래 키가 있습니다.

    이 테이블과 다른 테이블과 그 제약 조건을 위반하는 새 행 사이의 외래 키가 있습니다.

    당신은 테이블 사용자를 생성 보여 실행하면 제약 조건을 볼 수 있어야합니다, 그것은 제약 조건으로 표시됩니다 ... 그것으로 표시합니다 열 참조 어떤 테이블 / 컬럼.

    이 경우 국가 참조 (ID)를 country_type 당신은 국가의 값을 지정하지 않습니다. 당신은 country_type에 존재하는 값을 넣어해야합니다.

  3. ==============================

    3.그냥 다른 사람 도움이 될 수 있습니다 경우에 내 자신의 문제에 던져, 나는 / 복사이었다 내 마이그레이션 파일에 항목을 붙여 정수 주위에 따옴표를 넣어 엉망. 내가 입력하려고했던 값이 다른 정수를 참조 된 정수 필드에 가고 문자열로 간주 되었기 때문에,이 오류를 내놓았다.

    그냥 다른 사람 도움이 될 수 있습니다 경우에 내 자신의 문제에 던져, 나는 / 복사이었다 내 마이그레이션 파일에 항목을 붙여 정수 주위에 따옴표를 넣어 엉망. 내가 입력하려고했던 값이 다른 정수를 참조 된 정수 필드에 가고 문자열로 간주 되었기 때문에,이 오류를 내놓았다.

  4. ==============================

    4.나는 (통지 아이디 INT (8) 부호)와 같은 인서트를 해결할 수 있도록 소스 테이블의 기본 키 thath 수 있었다 또 다른 옵션은 서명되지 않은되지 않습니다 :

    나는 (통지 아이디 INT (8) 부호)와 같은 인서트를 해결할 수 있도록 소스 테이블의 기본 키 thath 수 있었다 또 다른 옵션은 서명되지 않은되지 않습니다 :

  5. ==============================

    5.참조 테이블 컬럼이있는 동안 제 경우, 값은 목표 테이블 열의 비어 있었다. 따라서이 오류를 던지고.

    참조 테이블 컬럼이있는 동안 제 경우, 값은 목표 테이블 열의 비어 있었다. 따라서이 오류를 던지고.

  6. ==============================

    6.내 경우에는 참조 값이 관련 테이블에 해당하지 않습니다. 다만 반드시 값이 참조 테이블 및 전류 열이 유효한 값을 대응하고있다 존재합니다.

    내 경우에는 참조 값이 관련 테이블에 해당하지 않습니다. 다만 반드시 값이 참조 테이블 및 전류 열이 유효한 값을 대응하고있다 존재합니다.

  7. ==============================

    7.내 경우, SQL에서의 문제는 명령 없지만, 입력은 그래서는 php.ini 파일에서 $ 요청으로 전송되지 않았습니다 :

    내 경우, SQL에서의 문제는 명령 없지만, 입력은 그래서는 php.ini 파일에서 $ 요청으로 전송되지 않았습니다 :

    max_input_vars은 기본적으로 1000 있었고, 난 그것을 변경 :

    max_input_vars = 2000
    

    당신은 웹 서버를 다시 시작해야합니다.

  8. from https://stackoverflow.com/questions/17648179/sqlstate23000-integrity-constraint-violation-1452-cannot-add-or-update-a-chi by cc-by-sa and MIT license