php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 16.06.2011, 17:44  
Neuer Benutzer
 
Registriert seit: 16.06.2011
Beiträge: 3
PHP-Kenntnisse:
Anfänger
tobi_s2 befindet sich auf einem aufstrebenden Ast
Standard [Erledigt] Probleme mit dem Foreign key

Erst einmal hallo an alle und ich hoffe Ihr könnt mir bei meinem Problem behilflich sein

Hier zu meinem Problem.

Ich habe 3 Tabellen, wovon 2 mit Daten vorbestückt sind. Die dritte Tabelle soll nun mit Formulardaten befüllt werden und jeweils eine Verknüpfung durch die 2 Foreign key zu den anderen Tabellen erhalten.

Und hier liegt jetzt mein Problem. Wenn ich die dritte Tabelle nur mit einer vorbestückten Tabelle verknüpfe (es liegt auch nur ein foreign key in der Tabelle die mit Inhalt befüllt werden soll) und Daten in sie hinein schreibe klappt das ohne Probleme, die Daten sind drin und der eine Foreignkey referenziert auf die vorbestückte Tabelle.

Erstelle ich mir jetzt aber die 3 Tabellen mit den 2 Foreign keys in der dritten Tabelle und will dann Daten die die Tabelle schreiben schmeißt er mir diesen Fehler hier

1452: Cannot add or update a child row: a foreign key constraint fails (`managementtool`.`beschaffung`, CONSTRAINT `fk_beschaffung_projekt` FOREIGN KEY (`projekt_id`) REFERENCES `projekt` (`projekt_id`) ON DELETE NO ACTION ON UPDATE NO ACTION)

Hier mal mein Code für das Erzeugen der 3 Tabellen

Code:
CREATE SCHEMA IF NOT EXISTS `managementtool` DEFAULT CHARACTER SET latin1 ;
USE `managementtool` ;

-- -----------------------------------------------------
-- Table `managementtool`.`kostenstelle`
-- -----------------------------------------------------
CREATE  TABLE IF NOT EXISTS `managementtool`.`kostenstelle` (
  `kostenstelle_id` INT NOT NULL AUTO_INCREMENT ,
  `kst_name` VARCHAR(45) NOT NULL ,
  `kst_nr` VARCHAR(10) NOT NULL ,
  PRIMARY KEY (`kostenstelle_id`) )
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8
COLLATE = utf8_unicode_ci;


-- -----------------------------------------------------
-- Table `managementtool`.`projekt`
-- -----------------------------------------------------
CREATE  TABLE IF NOT EXISTS `managementtool`.`projekt` (
  `projekt_id` INT NOT NULL AUTO_INCREMENT ,
  `projekt_name` VARCHAR(45) NOT NULL ,
  `projekt_nr` INT NOT NULL ,
  `projekt_jahr` YEAR NOT NULL ,
  `projekt_budget` INT NOT NULL ,
  PRIMARY KEY (`projekt_id`) )
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8
COLLATE = utf8_unicode_ci;


-- -----------------------------------------------------
-- Table `managementtool`.`beschaffung`
-- -----------------------------------------------------
CREATE  TABLE IF NOT EXISTS `managementtool`.`beschaffung` (
  `beschaffung_id` INT NOT NULL AUTO_INCREMENT ,
  `bereich` VARCHAR(45) NOT NULL ,
  `datum` DATE NOT NULL ,
  `laborleiter` VARCHAR(45) NOT NULL ,
  `laboringenieur` VARCHAR(45) NOT NULL ,
  `haus` VARCHAR(45) NOT NULL ,
  `raum` VARCHAR(45) NOT NULL ,
  `wertgrenzen` VARCHAR(45) NOT NULL ,
  `aufstellungsort` VARCHAR(45) NOT NULL ,
  `lieferfirma` VARCHAR(60) NOT NULL ,
  `einbauteil` TINYINT(1)  NOT NULL ,
  `inventar_nr1` VARCHAR(10) NOT NULL ,
  `ersatzteil` TINYINT(1)  NOT NULL ,
  `inventar_nr2` VARCHAR(10) NOT NULL ,
  `seriennummer` VARCHAR(10) NOT NULL ,
  `bezeichnung` VARCHAR(45) NOT NULL ,
  `notwendigkeit` VARCHAR(380) NOT NULL ,
  `folgekosten` VARCHAR(600) NOT NULL ,
  `sonstiges` VARCHAR(380) NOT NULL ,
  `kostenstelle_id` INT NOT NULL ,
  `projekt_id` INT NOT NULL ,
  PRIMARY KEY (`beschaffung_id`) ,
  INDEX `fk_beschaffung_kostenstelle` (`kostenstelle_id` ASC) ,
  INDEX `fk_beschaffung_projekt` (`projekt_id` ASC) ,
  CONSTRAINT `fk_beschaffung_kostenstelle`
    FOREIGN KEY (`kostenstelle_id` )
    REFERENCES `managementtool`.`kostenstelle` (`kostenstelle_id` )
    ON DELETE RESTRICT
    ON UPDATE RESTRICT,
  CONSTRAINT `fk_beschaffung_projekt`
    FOREIGN KEY (`projekt_id` )
    REFERENCES `managementtool`.`projekt` (`projekt_id` )
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8
COLLATE = utf8_unicode_ci;



SET SQL_MODE=@OLD_SQL_MODE;
SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;
und hier mal der php Code um die Daten in die 3. Tabelle zu schreiben.

PHP-Code:
$sqlab "insert beschaffung"
        
"(bereich, datum, laborleiter, laboringenieur, haus, "
        
"raum, wertgrenzen, aufstellungsort, lieferfirma, einbauteil, "
        
"inventar_nr1, ersatzteil, inventar_nr2, seriennummer, bezeichnung, "
        
"notwendigkeit, folgekosten, sonstiges, kostenstelle_id, projekt_id) values "
        
"('" $bereich "', "
        
"'" $datum "', "
        
"'" $laborleiter "', "
        
"'" $laboringenieur "', "
        
"'" $haus "', "
        
"'" $raum "', "
        
"'" $wertgrenze "', "
        
"'" $aufstellungsort "', "
        
"'" $lieferfirma "', "
        
"'" $einbauteil "', "
        
"'" $inventar_nr1 "', "
        
"'" $ersatzteil "', "
        
"'" $inventar_nr2 "', "
        
"'" $senummer "', "
        
"'" $bezeich "', "
        
"'" $notwendigkeit "', "
        
"'" $folgekosten "', "
        
"'" $sonstiges "', "
        
"'" $dsatz['kostenstelle_id'] . "', "
        
"'" $dsatz1['projekt_id'] . "' ) ";

mysql_query($sqlab); 
Ich hoffe ich habe mich halbwegs verständlich ausgedrückt und bin über jeden Hinweis dankbar

Geändert von tobi_s2 (16.06.2011 um 19:28 Uhr).
tobi_s2 ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 17.06.2011, 14:58  
Erfahrener Benutzer
 
Registriert seit: 19.06.2009
Beiträge: 837
PHP-Kenntnisse:
Fortgeschritten
Jens Clasen ist einfach richtig nettJens Clasen ist einfach richtig nettJens Clasen ist einfach richtig nettJens Clasen ist einfach richtig nettJens Clasen ist einfach richtig nett
Standard

Kann ich nicht reproduzieren. Wahrscheinlich enthält $dsatz1['projekt_id'] halt wirklich keine gültige ID.

Gruß Jens
Jens Clasen ist offline   Mit Zitat antworten
Alt 17.06.2011, 22:17  
Neuer Benutzer
 
Registriert seit: 16.06.2011
Beiträge: 3
PHP-Kenntnisse:
Anfänger
tobi_s2 befindet sich auf einem aufstrebenden Ast
Standard

die Variablen lass ich mir vorher auch einmal ausgeben, enthalten die IDs die ich im Formular auswähle. Hab jetzt in phpmyadmin einen Datensatz über alle 3 Tabellen angelegt, klappt ohne Probleme. Werd mir morgen den php Code erzeugen lassen und dann da meine Variablen eintragen und mal das erzeuge Statement mit meinem vergleichen....

Dann sollte der Fehler hoffentlich behoben sein.
tobi_s2 ist offline   Mit Zitat antworten
Alt 19.06.2011, 20:40  
Erfahrener Benutzer
 
Registriert seit: 13.05.2011
Beiträge: 188
PHP-Kenntnisse:
Fortgeschritten
php1704 wird schon bald berühmt werden
Standard

Du müsstest mit
Code:
SHOW INNODB STATUS
nach dem Fehler eine genau Fehlerbeschreibung bekommen warum es zu einem Fehler kam.

Grüße.
php1704 ist offline   Mit Zitat antworten
Alt 20.06.2011, 13:38  
Erfahrener Benutzer
 
Benutzerbild von tr0y
 
Registriert seit: 26.07.2010
Beiträge: 4.856
PHP-Kenntnisse:
Fortgeschritten
tr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblick
tr0y eine Nachricht über MSN schicken
Standard

SHOW INNODB STATUS ist deprecated.

Code:
SHOW ENGINE INNODB STATUS
http://dev.mysql.com/doc/refman/5.0/...db-status.html
__________________
Lasse mir ohne Anwendung von Gewalt Dinge schenken, Amazon weiß darüber bald mehr.
tr0y ist offline   Mit Zitat antworten
Alt 22.06.2011, 14:58  
Neuer Benutzer
 
Registriert seit: 16.06.2011
Beiträge: 3
PHP-Kenntnisse:
Anfänger
tobi_s2 befindet sich auf einem aufstrebenden Ast
Standard

besten dank, es klappt jetzt. ich weiß zwar immer noch nicht wo der Fehler war, aber das Stück für Stück tauschen der Variablen hats komischerweise gebracht.

Trotzdem danke und das mit dem
Code:
SHOW ENGINE INNODB STATUS
werd ich mir mal merken, scheint sehr nützlich zu sein.
tobi_s2 ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
$_SESSION Probleme Thomasd82hb PHP Tipps 2010 12 12.06.2010 01:34
Win+Firefox alles ok, IE oder Linux: Probleme vollderdude PHP Tipps 2009 6 02.01.2009 16:17
[Erledigt] Probleme mit iFrame rocco HTML, Usability und Barrierefreiheit 1 28.12.2008 17:44
Probleme bei Speicherung von serialize() Strings Manni2k PHP Tipps 2006 13 15.10.2006 15:06
Probleme mit mbstring extension unter Debian HStev Server, Hosting und Workstations 3 30.08.2006 20:55
#1216 - Cannot add or update a child row: a foreign key... argon Datenbanken 10 20.01.2006 16:48
[Erledigt] kann keine Foreign Key Anlegen Datenbanken 1 17.10.2005 11:11
Probleme bei der Installation von Turck MMCache tomx992 PHP-Fortgeschrittene 2 27.09.2005 20:31
Probleme beim Datenupload zu meiner Datenbank Datenbanken 3 05.09.2005 19:47
[Erledigt] foreign key anzeigen lassen Datenbanken 0 20.06.2005 16:03
[Erledigt] CSV Größe macht Probleme mit php PHP Tipps 2005 5 15.03.2005 21:29
Zwei Rechner ins Netz - Router - Hub - Probleme... imported_Ben Off-Topic Diskussionen 37 13.01.2005 21:36
[Erledigt] Technische Probleme mit Sessions PHP-Fortgeschrittene 4 18.11.2004 14:45
[Erledigt] Probleme mit Fremdsprachen HTML, Usability und Barrierefreiheit 2 21.09.2004 17:11

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php foreign key probleme, wie stelle ich einen foreign key ein, cannot add or update a child row: a foreign key constraint fails constraint foreign key references on delete set null), zwei foreign keys in tabelle, 2 foreign key auf eine tabelle, cannot add or update a child row: a foreign key constraint fails (`constraint foreign key (``) references `` (``) on delete no action on update no action), cannot add or update a child row: a foreign key constraint fails, php.de seriencode, 2 foreign keys eine tabelle?, create schema if not exists `neu` default character set, tabelle foreign key befüllen, innodb foreign key \3 tabellen\, foreign key in tabelle eintragen php, foreign key kein varchar, sql einfügen #1216 - cannot add or update a child row: a foreign key constraint fails, über php set foreign_key, add foreign key if not exists, 2 foreign keys eine tabelle, eine tabelle mit 2 foreign keys, cannot add or update a child row: a foreign key constraint fails on delete no action on update no action)

Alle Zeitangaben in WEZ +2. Es ist jetzt 12:16 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum