Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Dziwny błąd
Forum PHP.pl > Forum > Bazy danych > MySQL
badowl
Witam, właśnie staram się przygotować do matury z informatyki. Podczas rozwiązywania jednego z zadań z matury z zeszłego roku, przy dodawaniu rekordów do tabeli napotkałem błąd którego nie potrafię rozwiązać.
Należało utworzyć 2 tabele 'psy' i 'osoby':
  1. mysql> CREATE TABLE osoby (
  2. -> id varchar(50),
  3. -> imie varchar(50),
  4. -> nazwisko varchar(50),
  5. -> numer int(20),
  6. -> PRIMARY KEY(id)
  7. -> );
  8. Query OK, 0 rows affected (0.41 sec)

  1. mysql> CREATE TABLE psy (
  2. -> id int(100),
  3. -> rasa varchar(50),
  4. -> wiek int(20),
  5. -> plec varchar(50),
  6. -> medale int(20),
  7. -> id_osoby varchar(50),
  8. -> PRIMARY KEY(id),
  9. -> FOREIGN KEY (id_osoby) REFERENCES osoby(id) ON DELETE cascade ON UPDATE c
  10. ascade
  11. -> );
  12. Query OK, 0 rows affected (0.10 sec)

Do zadania są dołączone 2 pliki: 'psy.txt' i 'osoby.txt'
Dodawanie rekordów do tabeli 'osoby' zakończone powodzeniem
  1. mysql> LOAD DATA INFILE 'osoby.txt' INTO TABLE osoby
  2. -> FIELDS terminated BY ';'
  3. -> LINES terminated BY '\n'
  4. -> ;
  5. Query OK, 200 rows affected (0.09 sec)
  6. Records: 200 Deleted: 0 Skipped: 0 Warnings: 0

Natomiast przy dodawaniu do tabeli 'psy' pojawia się problem
  1. mysql> LOAD DATA INFILE 'psy.txt' INTO TABLE psy
  2. -> FIELDS terminated BY ';'
  3. -> LINES terminated BY '\n'
  4. -> ;
  5. ERROR 1452 (23000): Cannot ADD OR UPDATE a child row: a FOREIGN KEY constraint f
  6. ails (`matura2`.`psy`, CONSTRAINT `psy_ibfk_1` FOREIGN KEY (`id_osoby`) REFERENC
  7. ES `osoby` (`id`) ON DELETE CASCADE ON UPDATE CASCADE)


Czym to może byś spowodowane? Jeśli to ważne to to jest wersja zainstalowanego serwera bazy danych: mysql-5.5.24-win32
pmir13
Krótko mówiąc próbujesz do tabeli psy wstawić rekord z id_osoby, której nie ma w tabeli osoby.
Ponieważ jednak masz ustawiony constraint to dostajesz błąd.
Można spodziewać się, że raczej dane przygotowane są prawidłowo, wątpię by zadanie maturalne miało takie błędy, więc problem prawdopodobnie leży w sposobie importu tych danych.
Upewnij się co do kodowania tych plików tekstowych, dużo zależy skąd je masz, na jakim systemie były zapisane itp.
Skoro id_osoby to ostatnia pozycja w linii to może na przykład potrzebujesz LINES terminated BY '\r\n' ?
Bo może się okazać że do tabeli w pole id_osoby wstawiasz coś typu '14\r', wtedy naturalnie nie będą się zgadzać z id z tabeli osoby.

To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.