Table in mySQL that has several foreign keys that are primary key, getting an error ERROR 1215: Cannot add foreign key constraint - mysql

I had created those tables:
CREATE TABLE `course` (
`idcourse` varchar(2) NOT NULL,
`courseName` varchar(45) NOT NULL,
`subjectID` varchar(2) NOT NULL,
PRIMARY KEY (`idcourse`),
KEY `subjectID_idx` (`subjectID`),
CONSTRAINT `subjectID` FOREIGN KEY (`subjectID`) REFERENCES `subject` (`idsubject`) ON DELETE NO ACTION ON UPDATE NO ACTION
) ENGINE=InnoDB DEFAULT CHARSET=latin1
CREATE TABLE `exam` (
`subjectID` varchar(2) NOT NULL,
`courseID` varchar(2) NOT NULL,
`examNumber` varchar(2) NOT NULL,
`duration` int(11) DEFAULT NULL,
PRIMARY KEY (`subjectID`,`courseID`,`examNumber`),
KEY `idCourse_idx` (`courseID`),
CONSTRAINT `idCo` FOREIGN KEY (`courseID`) REFERENCES `course` (`idcourse`) ON DELETE NO ACTION ON UPDATE NO ACTION,
CONSTRAINT `idSu` FOREIGN KEY (`subjectID`) REFERENCES `subject` (`idsubject`) ON DELETE NO ACTION ON UPDATE NO ACTION
) ENGINE=InnoDB DEFAULT CHARSET=latin1
CREATE TABLE `question` (
`questionText` varchar(100) DEFAULT NULL,
`answer1` varchar(100) DEFAULT NULL,
`answer2` varchar(100) DEFAULT NULL,
`answer3` varchar(100) DEFAULT NULL,
`answer4` varchar(100) DEFAULT NULL,
`subjetID` varchar(2) NOT NULL,
`questionNumber` varchar(3) NOT NULL,
`rightAnswer` int(4) DEFAULT NULL,
PRIMARY KEY (`subjetID`,`questionNumber`),
CONSTRAINT `idsubject` FOREIGN KEY (`subjetID`) REFERENCES `subject` (`idsubject`) ON DELETE NO ACTION ON UPDATE NO ACTION
) ENGINE=InnoDB DEFAULT CHARSET=latin1
CREATE TABLE `subject` (
`idsubject` varchar(2) NOT NULL,
`subjectName` varchar(45) NOT NULL,
PRIMARY KEY (`idsubject`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
To subject table I add a record:
idsubject = 02, subjectName = Mathematica
To course table I add a record:
idcourse = 03, courseName = Algebra 1, subjectID = 02
To exam table I add a record:
subjectID = 02, courseID = 03, examNumber = 01, duration = 180
Now, I want to create a table: questionsinexam
CREATE TABLE `test`.`questionsinexam` (
`idExamSubject` VARCHAR(2) NOT NULL,
`idExamCourse` VARCHAR(2) NOT NULL,
`idExamNumber` VARCHAR(2) NOT NULL,
`idQuestionNumber` VARCHAR(3) NOT NULL,
`pointsPerQuestion` INT NULL,
PRIMARY KEY (`idExamSubject`, `idExamCourse`, `idExamNumber`, `idQuestionNumber`),
INDEX `idExamCourse_idx` (`idExamCourse` ASC),
INDEX `idExamNumber_idx` (`idExamNumber` ASC),
INDEX `idQuestionNumber_idx` (`idQuestionNumber` ASC),
CONSTRAINT `idExamSubject`
FOREIGN KEY (`idExamSubject`)
REFERENCES `test`.`exam` (`subjectID`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `idExamCourse`
FOREIGN KEY (`idExamCourse`)
REFERENCES `test`.`exam` (`courseID`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `idExamNumber`
FOREIGN KEY (`idExamNumber`)
REFERENCES `test`.`exam` (`examNumber`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `idQuestionNumber`
FOREIGN KEY (`idQuestionNumber`)
REFERENCES `test`.`question` (`questionNumber`)
ON DELETE NO ACTION
ON UPDATE NO ACTION);
Why I'm getting this error?
Thanks.

This constraint is definitely wrong:
CONSTRAINT `idExamSubject`
FOREIGN KEY (`idExamSubject`)
REFERENCES `test`.`exam` (`subjectID`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
Perhaps you intend:
CONSTRAINT `idExamSubject`
FOREIGN KEY (`idExamSubject`)
REFERENCES `test`.`subject` (`subjectID`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
Be sure that you create the target tables before you create the foreign key constraint. The referred to table needs to exist first (so the engine can validate types on the columns used for the foreign key).

Related

Error Code: 1822. Failed to add the foreign key constraint

CREATE TABLE `branch` (
`BranchID` INT NOT NULL,
`BranchSuburb` varchar(255) NOT NULL,
`BranchState` char(3) NOT NULL,
PRIMARY KEY (`BranchID`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
CREATE TABLE `member` (
`MemberID` INT NOT NULL,
`MemberStatus` char(9) DEFAULT 'REGULAR',
`MemberName` varchar(255) NOT NULL,
`MemberAddress` varchar(255) NOT NULL,
`MemberSuburb` varchar(25) NOT NULL,
`MemberState` char(3) NOT NULL,
`MemberExpDate` DATE,
`MemberPhone` varchar(10),
PRIMARY KEY (`MemberID`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
CREATE TABLE `publisher` (
`PublisherID` INT NOT NULL,
`PublisherName` varchar(255) NOT NULL,
`PublisherAddress` varchar(255) DEFAULT NULL,
PRIMARY KEY (`PublisherID`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
CREATE TABLE `book` (
`BookID` INT NOT NULL,
`BookTitle` varchar(255) NOT NULL,
`PublisherID` INT NOT NULL,
`PublishedYear` INT4,
`Price` Numeric(5,2) NOT NULL,
PRIMARY KEY (`BookID`),
KEY `PublisherID` (`PublisherID`),
CONSTRAINT `publisher_fk_1` FOREIGN KEY (`PublisherID`) REFERENCES `publisher` (`PublisherID`) ON DELETE RESTRICT
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
CREATE TABLE `author` (
`AuthorID` INT NOT NULL,
`AuthorName` varchar(255) NOT NULL,
`AuthorAddress` varchar(255) NOT NULL,
PRIMARY KEY (`AuthorID`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
CREATE TABLE `authoredby` (
`BookID` INT NOT NULL,
`AuthorID` INT NOT NULL,
PRIMARY KEY (`BookID`,`AuthorID`),
KEY `bookID` (`BookID`),
KEY `AuthorID` (`AuthorID`),
CONSTRAINT `book_fk_1` FOREIGN KEY (`BookID`) REFERENCES `book` (`bookID`) ON DELETE RESTRICT,
CONSTRAINT `author_fk_1` FOREIGN KEY (`AuthorID`) REFERENCES `author` (`AuthorID`) ON DELETE RESTRICT
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
CREATE TABLE `holding` (
`BranchID` INT NOT NULL,
`BookID` INT NOT NULL,
`InStock` INT DEFAULT 1,
`OnLoan` INT DEFAULT 0,
PRIMARY KEY (`BranchID`,`BookID`),
KEY `bookID` (`BookID`),
KEY `BranchID` (`BranchID`),
CONSTRAINT `holding_cc_1` CHECK(`InStock`>=`OnLoan`),
CONSTRAINT `book_fk_2` FOREIGN KEY (`BookID`) REFERENCES `book` (`bookID`) ON DELETE RESTRICT,
CONSTRAINT `branch_fk_1` FOREIGN KEY (`BranchID`) REFERENCES `branch` (`BranchID`) ON DELETE RESTRICT
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
CREATE TABLE `borrowedby` (
`BookIssueID` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`BranchID` INT NOT NULL,
`BookID` INT NOT NULL,
`MemberID` INT NOT NULL,
`DateBorrowed` DATE,
`DateReturned` DATE DEFAULT NULL,
`ReturnDueDate` DATE,
PRIMARY KEY (`BookIssueID`),
KEY `bookID` (`BookID`),
KEY `BranchID` (`BranchID`),
KEY `MemberID` (`MemberID`),
CONSTRAINT `borrowedby_cc_1` CHECK(`DateBorrowed`<`ReturnDueDate`),
CONSTRAINT `holding_fk_1` FOREIGN KEY (`BookID`,`BranchID`) REFERENCES `holding` (`BookID`,`BranchID`) ON DELETE RESTRICT,
CONSTRAINT `member_fk_1` FOREIGN KEY (`MemberID`) REFERENCES `member` (`MemberID`) ON DELETE RESTRICT
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
Im getting the following error when i try to execute the last create query for the borrowedby table.
Error Code: 1822. Failed to add the foreign key constraint. Missing index for constraint 'holding_fk_1' in the referenced table 'holding'
have you tried to split the double foreign key? like this:
CONSTRAINT `holding_fk_1` FOREIGN KEY (`BookID`) REFERENCES `holding` (`BookID`) ON DELETE RESTRICT,
CONSTRAINT `holding_fk_1` FOREIGN KEY (`BranchID`) REFERENCES `holding` (`BranchID`) ON DELETE RESTRICT
what dms are you using? could be that you need to use another syntax to reference two foreign key at one or could be that it's not supported.
As said in the answer, just by changing order can fix it.
"Your code fails in Mysql 8.0.12 but runs fine in 8.0.22 As a workaround reverse the order of the columns: CONSTRAINT holding_fk_1 FOREIGN KEY (BranchID,BookID) REFERENCES holding (BranchID,BookID) ON DELETE RESTRICT, –
forpas
Oct 27 '20 at 15:50 "

MySQL Workbench Error 1005 cant create table

So I am very new to MySQL but I would like to think I that grasp a decent bit of it so far. I am struggling with the creation of the table PROJECT. I'm almost positive after my own research that it has something to do with my keys in the table. But I do not understand where the problem is or how to fix it.
The SQL queries below creates all tables for the project. I'm not sure of the problem because I only get the error code for the project for now. Any insight and advice on what causes this and how to rectify this in the code would be greatly appreciated.
CREATE TABLE IF NOT EXISTS `ebrasi1db`.`employee` (
`ssn` VARCHAR(10) NOT NULL,
`fname` VARCHAR(45) NULL DEFAULT NULL,
`minit` VARCHAR(1) NULL DEFAULT NULL,
`lname` VARCHAR(45) NULL DEFAULT NULL,
`bdate` DATE NULL DEFAULT NULL,
`address` VARCHAR(45) NULL DEFAULT NULL,
`sex` VARCHAR(1) NULL DEFAULT NULL,
`salary` INT(11) NULL DEFAULT NULL,
`superssn` VARCHAR(10) NULL DEFAULT NULL,
`dno` INT(11) NULL DEFAULT NULL,
PRIMARY KEY (`ssn`),
INDEX `superssn_idx` (`superssn` ASC),
INDEX `dno_idx` (`dno` ASC),
CONSTRAINT `superssn`
FOREIGN KEY (`superssn`)
REFERENCES `ebrasi1db`.`employee` (`ssn`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `dno`
FOREIGN KEY (`dno`)
REFERENCES `ebrasi1db`.`department` (`dnumber`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `ebrasi1db`.`department`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `ebrasi1db`.`department` (
`dnumber` INT(11) NOT NULL,
`dname` VARCHAR(45) NULL DEFAULT NULL,
`mgrssn` VARCHAR(10) NULL DEFAULT NULL,
`mgrstartdate` DATE NULL DEFAULT NULL,
PRIMARY KEY (`dnumber`),
INDEX `mgrssn_idx` (`mgrssn` ASC),
CONSTRAINT `mgrssn`
FOREIGN KEY (`mgrssn`)
REFERENCES `ebrasi1db`.`employee` (`ssn`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `ebrasi1db`.`dept_locations`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `ebrasi1db`.`dept_locations` (
`dnumber` INT(11) NOT NULL,
`dlocation` VARCHAR(45) NOT NULL,
PRIMARY KEY (`dnumber`, `dlocation`),
CONSTRAINT `dnumber`
FOREIGN KEY (`dnumber`)
REFERENCES `ebrasi1db`.`department` (`dnumber`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `ebrasi1db`.`project`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `ebrasi1db`.`project` (
`pnumber` INT(11) NOT NULL,
`pname` VARCHAR(45) NULL,
`plocation` VARCHAR(45) NULL,
`dnum` INT(11) NOT NULL,
PRIMARY KEY (`pnumber`),
INDEX `dnum_idx` (`dnum` ASC),
INDEX `plocation_idx` (`plocation` ASC),
CONSTRAINT `dnum`
FOREIGN KEY (`dnum`)
REFERENCES `ebrasi1db`.`department` (`dnumber`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `plocation`
FOREIGN KEY (`plocation`)
REFERENCES `ebrasi1db`.`dept_locations` (`dlocation`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `ebrasi1db`.`works_on`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `ebrasi1db`.`works_on` (
`essn` VARCHAR(10) NOT NULL,
`pno` INT NOT NULL,
`hours` DECIMAL(5,2) NULL,
PRIMARY KEY (`essn`, `pno`),
INDEX `pno_idx` (`pno` ASC),
CONSTRAINT `works_on_essn`
FOREIGN KEY (`essn`)
REFERENCES `ebrasi1db`.`employee` (`ssn`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `pno`
FOREIGN KEY (`pno`)
REFERENCES `ebrasi1db`.`project` (`pnumber`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `ebrasi1db`.`dependent`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `ebrasi1db`.`dependent` (
`essn` VARCHAR(10) NOT NULL,
`dependent_name` VARCHAR(45) NOT NULL,
`sex` VARCHAR(1) NULL,
`bdate` DATE NULL,
`relation` VARCHAR(45) NULL,
PRIMARY KEY (`essn`, `dependent_name`),
CONSTRAINT `dependent_essn`
FOREIGN KEY (`essn`)
REFERENCES `ebrasi1db`.`employee` (`ssn`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
Your problem lies essentially in the fact that you are trying to create a constraint to a non key column (because the referenced table has a double key).
In your table project you have:
CONSTRAINT `plocation`
FOREIGN KEY (`plocation`)
REFERENCES `dept_locations` (`dlocation`)
ON DELETE NO ACTION
ON UPDATE NO ACTION
dept_locations.dlocation is not a key ALONE (primary key), therefore the reason you are not able to create that constraint.
You need to make the constraint for both keys from the referenced table like this:
CONSTRAINT `plocation`
FOREIGN KEY (`pnumber`, `plocation`)
REFERENCES `dept_locations` (`dnumber`, `dlocation`)
ON DELETE NO ACTION
ON UPDATE NO ACTION
In this case you won't need the first constraint dnum as it is already referenced in dept_locations table.
Also note that you tables department and employee will not be created because one reference the other so you need to create the tables first without the constraints then apply the constraints like:
ALTER TABLE `employee` add
CONSTRAINT `dno`
FOREIGN KEY (`dno`)
REFERENCES `department` (`dnumber`)
ON DELETE NO ACTION
ON UPDATE NO ACTION;
Same for the department table and its constraint to employee
Normally you get the Error 1005 when it unable to create the foreign keys. When you are creating a foreign key constraint the parent table should be available in the database.
In your case 'employee' table has a FK to 'department' table but you are trying to create the 'employee' table before creating the 'department' table. Also the 'department' table has a FK back to 'employee' table. Therefore you are not able to create the 'department' table first. To solve this you may create the 'department' table first without FK to 'employee' table. Then create the 'employee' table and then alter the 'department' table with FK.
Here is the modified code for first two tables and follow the same pattern for rest if you get the same error.
CREATE TABLE IF NOT EXISTS `ebrasi1db`.`department` (
`dnumber` INT(11) NOT NULL,
`dname` VARCHAR(45) NULL DEFAULT NULL,
`mgrssn` VARCHAR(10) NULL DEFAULT NULL,
`mgrstartdate` DATE NULL DEFAULT NULL,
PRIMARY KEY (`dnumber`),
INDEX `mgrssn_idx` (`mgrssn` ASC))
ENGINE = InnoDB;
CREATE TABLE IF NOT EXISTS `ebrasi1db`.`employee` (
`ssn` VARCHAR(10) NOT NULL,
`fname` VARCHAR(45) NULL DEFAULT NULL,
`minit` VARCHAR(1) NULL DEFAULT NULL,
`lname` VARCHAR(45) NULL DEFAULT NULL,
`bdate` DATE NULL DEFAULT NULL,
`address` VARCHAR(45) NULL DEFAULT NULL,
`sex` VARCHAR(1) NULL DEFAULT NULL,
`salary` INT(11) NULL DEFAULT NULL,
`superssn` VARCHAR(10) NULL DEFAULT NULL,
`dno` INT(11) NULL DEFAULT NULL,
PRIMARY KEY (`ssn`),
INDEX `superssn_idx` (`superssn` ASC),
INDEX `dno_idx` (`dno` ASC),
CONSTRAINT `superssn`
FOREIGN KEY (`superssn`)
REFERENCES `ebrasi1db`.`employee` (`ssn`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `dno`
FOREIGN KEY (`dno`)
REFERENCES `ebrasi1db`.`department` (`dnumber`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
alter table department add
CONSTRAINT `mgrssn`
FOREIGN KEY (`mgrssn`)
REFERENCES `ebrasi1db`.`employee` (`ssn`)
ON DELETE NO ACTION
ON UPDATE NO ACTION;

MySQL duplicate key error

If I run this code all work well, but if uncomment last constraint, I got the following error:
Error Code: 1022. Can't write; duplicate key in table 'transfer'
but there no another key 'fk_component_id', what wrong with this code?
-- -----------------------------------------------------
-- Table `pcdb`.`transfer`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `pcdb`.`transfer` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`component_id` INT UNSIGNED NOT NULL,
`type` INT NULL,
`parent_id` INT UNSIGNED NULL,
`source_id` INT UNSIGNED NULL,
`contractor_id` INT UNSIGNED NULL,
`src_department_id` INT UNSIGNED NULL,
`dest_department_id` INT UNSIGNED NULL,
`session_id` INT UNSIGNED NOT NULL,
`count` INT UNSIGNED NOT NULL,
`comment` TEXT(65535) NULL,
`active` TINYINT(1) NOT NULL DEFAULT 1,
PRIMARY KEY (`id`),
CONSTRAINT `fk_src_department_id`
FOREIGN KEY (`src_department_id`)
REFERENCES `pcdb`.`department` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_income_id`
FOREIGN KEY (`source_id`)
REFERENCES `pcdb`.`transfer` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_contractor_id`
FOREIGN KEY (`contractor_id`)
REFERENCES `pcdb`.`contractor` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_session_id`
FOREIGN KEY (`session_id`)
REFERENCES `pcdb`.`session` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_dest_department_id`
FOREIGN KEY (`dest_department_id`)
REFERENCES `pcdb`.`department` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_parent_id`
FOREIGN KEY (`parent_id`)
REFERENCES `pcdb`.`transfer` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION/*,
CONSTRAINT `fk_component_id`
FOREIGN KEY (`component_id`)
REFERENCES `pcdb`.`component` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION*/);
It sounds like you may already have a constraint with that name on a different table in the database. Try changing the name of that constraint to something like "fk_transfer_component_id" and see if you still get the error.

Error when updating with foreign keys with ON UPDATE CASCADE

I have this table:
CREATE TABLE `user` (
`idUser` char(13) NOT NULL,
`contrasena` varchar(50) NOT NULL DEFAULT '',
`fechaInicio` datetime DEFAULT NULL,
`emailRegistrado` varchar(100) DEFAULT NULL,
`tipoUsuario` int(11) NOT NULL,
PRIMARY KEY (`idUser`),
KEY `tipoUser` (`tipoUsuario`) USING BTREE,
CONSTRAINT `tipoUser` FOREIGN KEY (`tipoUsuario`) REFERENCES `tipo_user` (`idTipo`) ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf16;
And then this table:
CREATE TABLE `alumno` (
`idAlumno` char(10) NOT NULL DEFAULT '',
`Nombre` varchar(60) NOT NULL,
`ApePaterno` varchar(30) NOT NULL,
`ApeMaterno` varchar(30) NOT NULL,
`CURP` varchar(18) DEFAULT NULL,
`Sexo` enum('H','M') NOT NULL,
`FechaNac` date NOT NULL,
`Estado_Nac` int(11) DEFAULT NULL,
`Nacionalidad` int(11) DEFAULT NULL,
PRIMARY KEY (`idAlumno`),
KEY `fk_Alumno_Estados1_idx` (`Estado_Nac`) USING BTREE,
KEY `fk_Alumno_Pais1_idx` (`Nacionalidad`) USING BTREE,
CONSTRAINT `fk_Alumno_Estados1` FOREIGN KEY (`Estado_Nac`) REFERENCES `estadomexico` (`idEstados`) ON DELETE NO ACTION ON UPDATE NO ACTION,
CONSTRAINT `fk_Alumno_Pais1` FOREIGN KEY (`Nacionalidad`) REFERENCES `pais` (`idPais`) ON DELETE NO ACTION ON UPDATE NO ACTION,
CONSTRAINT `fk_Al_User` FOREIGN KEY (`idAlumno`) REFERENCES `user` (`idUser`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf16;
When I try to update a value for a user, MySQL throws the following message:
Cannot delete or update a parent row: a foreign key constraint fails (mydb.empleado, CONSTRAINT fk_Empleado_USer FOREIGN KEY
(idEmpleado) REFERENCES user (idUser) ON DELETE CASCADE ON
UPDATE CASCADE)
Can anybody please help me?

#1005 - Can't create table

i'm trying to create some tables in my db but my phpmyadmin is displying the error 1005 - Can't create table, on table tbapp_por_tbpais, below is mysql, cam someone help me ?
Table tbApp
CREATE TABLE IF NOT EXISTS `tbApp` (
`app_cod` INT NOT NULL,
`app_nome` VARCHAR(45) NULL,
`app_cod_do_app` VARCHAR(45) NULL,
`app_pac_fit_qtde` VARCHAR(10) NULL,
`app_pac_flex_qtde` VARCHAR(45) NULL,
`app_pac_mega_qtde` VARCHAR(45) NULL,
`app_trial` VARCHAR(1) NULL,
`app_trial_dias` VARCHAR(4) NULL,
`app_pac_fit_preco` VARCHAR(45) NULL,
`app_pac_flex_preco` VARCHAR(45) NULL,
`app_pac_mega_preço` VARCHAR(45) NULL,
PRIMARY KEY (`app_cod`))
ENGINE = InnoDB;
Table cupomDesc
CREATE TABLE IF NOT EXISTS `cupomDesc` (
`cupom_cod` INT NOT NULL,
`cupom_cod_desc` VARCHAR(45) NULL,
`cupom_valido_ate` DATETIME NULL,
`cupom_exp_percent` VARCHAR(45) NULL,
PRIMARY KEY (`cupom_cod`))
ENGINE = InnoDB;
Table tela
CREATE TABLE IF NOT EXISTS `tela` (
`tela_cod` INT NOT NULL,
`tela_nome` VARCHAR(45) NULL,
PRIMARY KEY (`tela_cod`))
ENGINE = InnoDB;
Table tbHelptips
CREATE TABLE IF NOT EXISTS `tbHelptips` (
`help_cod` INT NOT NULL,
`help_texto` VARCHAR(45) NULL,
`tela_tela_cod` INT NOT NULL,
PRIMARY KEY (`help_cod`),
INDEX `fk_tbHelptips_tela1_idx` (`tela_tela_cod` ASC),
CONSTRAINT `fk_tbHelptips_tela1`
FOREIGN KEY (`tela_tela_cod`)
REFERENCES `tela` (`tela_cod`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
Table tbApp_por_tbPais
CREATE TABLE IF NOT EXISTS `tbApp_por_tbPais` (
`tbApp_app_cod` INT NOT NULL,
`tbPais_id` INT(11) NOT NULL,
PRIMARY KEY (`tbApp_app_cod`, `tbPais_id`),
INDEX `fk_tbApp_has_tbPais_tbPais1_idx` (`tbPais_id` ASC),
INDEX `fk_tbApp_has_tbPais_tbApp1_idx` (`tbApp_app_cod` ASC),
CONSTRAINT `fk_tbApp_has_tbPais_tbApp1`
FOREIGN KEY (`tbApp_app_cod`)
REFERENCES `tbApp` (`app_cod`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_tbApp_has_tbPais_tbPais1`
FOREIGN KEY (`tbPais_id`)
REFERENCES `tbPais` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
Table tbRevenda_has_tbApp
CREATE TABLE IF NOT EXISTS `tbRevenda_has_tbApp` (
`tbRevenda_id` INT(11) NOT NULL,
`tbApp_app_cod` INT NOT NULL,
`tbApp_Qtde` VARCHAR(45) NULL,
PRIMARY KEY (`tbRevenda_id`, `tbApp_app_cod`),
INDEX `fk_tbRevenda_has_tbApp_tbApp1_idx` (`tbApp_app_cod` ASC),
INDEX `fk_tbRevenda_has_tbApp_tbRevenda1_idx` (`tbRevenda_id` ASC),
CONSTRAINT `fk_tbRevenda_has_tbApp_tbRevenda1`
FOREIGN KEY (`tbRevenda_id`)
REFERENCES `tbRevenda` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_tbRevenda_has_tbApp_tbApp1`
FOREIGN KEY (`tbApp_app_cod`)
REFERENCES `tbApp` (`app_cod`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
Table mvx_serial
CREATE TABLE IF NOT EXISTS `mvx_serial` (
`mvx_cod` INT NOT NULL,
`mvx_num_serial` VARCHAR(45) NULL,
`tbPais_id` INT(11) NOT NULL,
PRIMARY KEY (`mvx_cod`),
INDEX `fk_mvx_serial_tbPais1_idx` (`tbPais_id` ASC),
CONSTRAINT `fk_mvx_serial_tbPais1`
FOREIGN KEY (`tbPais_id`)
REFERENCES `tbPais` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
Table cambio
CREATE TABLE IF NOT EXISTS `cambio` (
`combio_cod` INT NOT NULL,
`cambio_valor` VARCHAR(45) NULL,
PRIMARY KEY (`combio_cod`))
ENGINE = InnoDB;
Table historico
CREATE TABLE IF NOT EXISTS `historico` (
`hist_cod` INT NOT NULL,
`hist_geracao_dt_ativacao` VARCHAR(45) NULL,
`hist_metodo_de_download` VARCHAR(45) NULL,
`hist_licencas_qtde` VARCHAR(45) NULL,
`hist_ip` VARCHAR(45) NULL,
`hist_alias` VARCHAR(45) NULL,
`tbApp_app_cod` INT NOT NULL,
`cupomDesc_cupom_cod` INT NULL,
`mvx_serial_mvx_cod` INT NOT NULL,
`tbRevenda_id` INT(11) NOT NULL,
PRIMARY KEY (`hist_cod`),
INDEX `fk_historico_tbApp1_idx` (`tbApp_app_cod` ASC),
INDEX `fk_historico_cupomDesc1_idx` (`cupomDesc_cupom_cod` ASC),
INDEX `fk_historico_mvx_serial1_idx` (`mvx_serial_mvx_cod` ASC),
INDEX `fk_historico_tbRevenda1_idx` (`tbRevenda_id` ASC),
CONSTRAINT `fk_historico_tbApp1`
FOREIGN KEY (`tbApp_app_cod`)
REFERENCES `tbApp` (`app_cod`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_historico_cupomDesc1`
FOREIGN KEY (`cupomDesc_cupom_cod`)
REFERENCES `cupomDesc` (`cupom_cod`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_historico_mvx_serial1`
FOREIGN KEY (`mvx_serial_mvx_cod`)
REFERENCES `mvx_serial` (`mvx_cod`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_historico_tbRevenda1`
FOREIGN KEY (`tbRevenda_id`)
REFERENCES `tbRevenda` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
The error seems to be on foreign key constraint
CREATE TABLE IF NOT EXISTS `tbApp_por_tbPais` (
...
CONSTRAINT `fk_tbApp_has_tbPais_tbPais1`
FOREIGN KEY (`tbPais_id`)
REFERENCES `tbPais` (`id`)
I do not see a table called tbPais.
AS the error essage, for this table tbApp_por_tbPais using foreign key ref tbPais.id,but you don't have the this table(tbPais).
CREATE TABLE IF NOT EXISTS `tbApp_por_tbPais` (
`tbApp_app_cod` INT NOT NULL,
`tbPais_id` INT(11) NOT NULL,
PRIMARY KEY (`tbApp_app_cod`, `tbPais_id`),
INDEX `fk_tbApp_has_tbPais_tbPais1_idx` (`tbPais_id` ASC),
INDEX `fk_tbApp_has_tbPais_tbApp1_idx` (`tbApp_app_cod` ASC),
CONSTRAINT `fk_tbApp_has_tbPais_tbApp1`
FOREIGN KEY (`tbApp_app_cod`)
REFERENCES `tbApp` (`app_cod`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_tbApp_has_tbPais_tbPais1`
FOREIGN KEY (`tbPais_id`)
REFERENCES `tbPais` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
And lost table tbRevenda also.
CREATE TABLE IF NOT EXISTS `tbPais` (
`id` INT NOT NULL PRIMARY key
)
ENGINE = InnoDB;
CREATE TABLE IF NOT EXISTS `tbRevenda` (
`id` INT(11) NOT NULL PRIMARY KEY
)
ENGINE = InnoDB;
Try to type in your database name before table name ...
CREATE TABLE IF NOT EXISTS `databasename.cambio` (