VieiraPT Posted February 22, 2014 at 08:14 PM Report #546190 Posted February 22, 2014 at 08:14 PM (edited) Boas estou com um problema quando introduzo valores na minha base de dados, é o seguinte: O Script: drop database if exists safebox; create database safebox; use safebox; create table Pais ( cod_pais int(50) primary key, nome varchar(50) ) engine=innodb; create table Registo ( username varchar(50) primary key, password varchar(50), primeiro_nome varchar(50), ultimo_nome varchar(50), email varchar(50), anonasc int(5), nacionalidade int(50), sexo varchar(50), foreign key(nacionalidade) references Pais(cod_pais) ) engine=innodb; create table Partilha ( num_partilha int(50) auto_increment primary key, nome_amigo varchar(50), data_partilha date, foreign key(nome_amigo) references Registo(username) )engine=innodb; create table Formato ( id_formato int(50) primary key, nome varchar(50) ) engine=innodb; create table Ficheiro ( id_ficheiro int(50) auto_increment primary key, num_utilizador int(50), nome varchar(50), tamanho int(50), id_formato int(50), foreign key(id_formato) references Formato(id_formato) )engine=innodb; Insert into Registo values ( 'Admin', 'admin007', 'Bruno', 'Vieira', 'brunobmsv@hotmail.com', '1994', '1', 'Masculino'); quando importo esse script aparece o seguinte erro: Erro Comando SQL: INSERT INTO Registo VALUES ( 'Admin', 'admin007', 'Bruno', 'Vieira', 'brunobmsv@hotmail.com', '1994', '1', 'Masculino' ); Mensagens do MySQL : Documentação #1452 - Cannot add or update a child row: a foreign key constraint fails (`safebox`.`registo`, CONSTRAINT `registo_ibfk_1` FOREIGN KEY (`cod_pais`) REFERENCES `pais` (`cod_pais`)) alguem sabe o que resolver isto? Edited February 22, 2014 at 10:41 PM by apocsantos
nelsonr Posted February 22, 2014 at 08:53 PM Report #546214 Posted February 22, 2014 at 08:53 PM Estás a inserir um registo atribuindo o campo nacionalidade o valor 1, que supostamente é um código que tem de existir na tabela Pais.
apocsantos Posted February 22, 2014 at 10:48 PM Report #546266 Posted February 22, 2014 at 10:48 PM Boa noite, Não podes inserir o valor 1 que está relacionado com a tabela pais, se esse valor não existir na tabela pais. DROP DATABASE IF EXISTS safebox; CREATE DATABASE safebox; USE safebox; CREATE TABLE Pais ( cod_pais INT(50) PRIMARY KEY, nome VARCHAR(50) ) engine=innodb; INSERT INTO pais VALUES ('1', 'Portugal'); CREATE TABLE Registo ( username VARCHAR(50) PRIMARY KEY, password VARCHAR(50), primeiro_nome VARCHAR(50), ultimo_nome VARCHAR(50), email VARCHAR(50), anonasc INT(5), nacionalidade INT(50), sexo VARCHAR(50), FOREIGN KEY(nacionalidade) REFERENCES Pais(cod_pais) ) engine=innodb; CREATE TABLE Partilha ( num_partilha INT(50) AUTO_INCREMENT PRIMARY KEY, nome_amigo VARCHAR(50), data_partilha DATE, FOREIGN KEY(nome_amigo) REFERENCES Registo(username) )engine=innodb; CREATE TABLE Formato ( id_formato INT(50) PRIMARY KEY, nome VARCHAR(50) ) engine=innodb; CREATE TABLE Ficheiro ( id_ficheiro INT(50) AUTO_INCREMENT PRIMARY KEY, num_utilizador INT(50), nome VARCHAR(50), tamanho INT(50), id_formato INT(50), FOREIGN KEY(id_formato) REFERENCES Formato(id_formato) )engine=innodb; INSERT INTO Registo VALUES ( 'Admin', 'admin007', 'Bruno', 'Vieira', 'brunobmsv@hotmail.com', '1994', '1', 'Masculino'); Cordiais cumprimentos, Apocsantos "A paciência é uma das coisas que se aprendeu na era do 48k" O respeito é como a escrita de código, uma vez perdido, dificilmente se retoma o habito"
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now