error 1452: Foreign Key error

178 Views Asked by At

I am new to mysql and I am trying create a gradebook db to keep track of grades for a certain class. I am using Mysql workbench and here is my code:

SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;

SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;

SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL';

DROP SCHEMA IF EXISTS nj1368843 ;

CREATE SCHEMA IF NOT EXISTS nj1368843 DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci ;

USE nj1368843 ;


-- Table nj1368843.Users


DROP TABLE IF EXISTS nj1368843.Users ;

CREATE TABLE IF NOT EXISTS nj1368843.Users (

idUsers INT NOT NULL AUTO_INCREMENT ,

UserName VARCHAR(45) NOT NULL ,

pw VARCHAR(45) NOT NULL ,

PRIMARY KEY (idUsers, UserName, pw) )

ENGINE = InnoDB;

INSERT INTO nj1368843.Users (UserName, pw) VALUES ('njack2', '123');


-- Table nj1368843.Teachers


DROP TABLE IF EXISTS nj1368843.Teachers ;

CREATE TABLE IF NOT EXISTS nj1368843.Teachers (

idTeachers INT NOT NULL ,

Lname VARCHAR(45) NULL ,

Fname VARCHAR(45) NULL ,

Users_idUsers INT NOT NULL ,

Users_pw VARCHAR(45) NOT NULL ,

PRIMARY KEY (idTeachers) ,

INDEX fk_Teachers_Users1 (Users_idUsers ASC, Users_pw ASC) ,

CONSTRAINT fk_Teachers_Users1

FOREIGN KEY (`Users_idUsers` , `Users_pw` )

REFERENCES `nj1368843`.`Users` (`idUsers` , `UserName` )

ON DELETE NO ACTION

ON UPDATE NO ACTION)

ENGINE = InnoDB;

INSERT INTO nj1368843.Teachers (idTeachers, Lname, Fname, Users_idUsers, Users_pw) VALUES (105, 'Stacey', 'Sheila', '1', '123');


-- Table nj1368843.Schedule


DROP TABLE IF EXISTS nj1368843.Schedule ;

CREATE TABLE IF NOT EXISTS nj1368843.Schedule (

course_id INT NOT NULL ,

Semester VARCHAR(45) NULL ,

Year YEAR NULL ,

Teachers_idTeachers INT NOT NULL ,

PRIMARY KEY (course_id) ,

INDEX fk_Grades_Teachers1 (Teachers_idTeachers ASC) ,

CONSTRAINT fk_Grades_Teachers1

FOREIGN KEY (`Teachers_idTeachers` )

REFERENCES `nj1368843`.`Teachers` (`idTeachers` )

ON DELETE NO ACTION

ON UPDATE NO ACTION)

ENGINE = InnoDB;


-- Table nj1368843.Assignments


DROP TABLE IF EXISTS nj1368843.Assignments ;

CREATE TABLE IF NOT EXISTS nj1368843.Assignments (

idAssignments INT NOT NULL ,

Assignment 1 INT NULL ,

AVG_Grade INT(11) NULL ,

Schedule_course_id INT NOT NULL ,

PRIMARY KEY (idAssignments) ,

INDEX fk_Assignments_Schedule1 (Schedule_course_id ASC) ,

CONSTRAINT fk_Assignments_Schedule1

FOREIGN KEY (`Schedule_course_id` )

REFERENCES `nj1368843`.`Schedule` (`course_id` )

ON DELETE NO ACTION

ON UPDATE NO ACTION)

ENGINE = InnoDB;


-- Table nj1368843.Student


DROP TABLE IF EXISTS nj1368843.Student ;

CREATE TABLE IF NOT EXISTS nj1368843.Student (

idStudent INT NOT NULL ,

lname VARCHAR(45) NULL ,

fname VARCHAR(45) NULL ,

Schedule_course_id INT NOT NULL ,

Users_idUsers INT NOT NULL ,

Users_pw VARCHAR(45) NOT NULL ,

Assignments_idAssignments INT NOT NULL ,

PRIMARY KEY (idStudent) ,

INDEX fk_Student_Schedule1 (Schedule_course_id ASC) ,

INDEX fk_Student_Users1 (Users_idUsers ASC, Users_pw ASC) ,

INDEX fk_Student_Assignments1 (Assignments_idAssignments ASC) ,

CONSTRAINT fk_Student_Schedule1

FOREIGN KEY (`Schedule_course_id` )

REFERENCES `nj1368843`.`Schedule` (`course_id` )

ON DELETE NO ACTION

ON UPDATE NO ACTION,

CONSTRAINT fk_Student_Users1

FOREIGN KEY (`Users_idUsers` , `Users_pw` )

REFERENCES `nj1368843`.`Users` (`idUsers` , `UserName` )

ON DELETE NO ACTION

ON UPDATE NO ACTION,

CONSTRAINT fk_Student_Assignments1

FOREIGN KEY (`Assignments_idAssignments` )

REFERENCES `nj1368843`.`Assignments` (`idAssignments` )

ON DELETE NO ACTION

ON UPDATE NO ACTION)

ENGINE = InnoDB;


-- Table nj1368843.Classes


DROP TABLE IF EXISTS nj1368843.Classes ;

CREATE TABLE IF NOT EXISTS nj1368843.Classes (

cid INT NOT NULL ,

Name VARCHAR(45) NULL ,

Schedule_course_id INT NOT NULL ,

PRIMARY KEY (cid) ,

INDEX fk_Classes_Schedule1 (Schedule_course_id ASC) ,

CONSTRAINT fk_Classes_Schedule1

FOREIGN KEY (`Schedule_course_id` )

REFERENCES `nj1368843`.`Schedule` (`course_id` )

ON DELETE NO ACTION

ON UPDATE NO ACTION)

ENGINE = InnoDB;


-- Table nj1368843.Teachers


DROP TABLE IF EXISTS nj1368843.Teachers ;

CREATE TABLE IF NOT EXISTS nj1368843.Teachers (

idTeachers INT NOT NULL ,

Lname VARCHAR(45) NULL ,

Fname VARCHAR(45) NULL ,

Users_idUsers INT NOT NULL ,

Users_pw VARCHAR(45) NOT NULL ,

PRIMARY KEY (idTeachers) ,

INDEX fk_Teachers_Users1 (Users_idUsers ASC, Users_pw ASC) ,

CONSTRAINT fk_Teachers_Users1

FOREIGN KEY (`Users_idUsers` , `Users_pw` )

REFERENCES `nj1368843`.`Users` (`idUsers` , `UserName` )

ON DELETE NO ACTION

ON UPDATE NO ACTION)

ENGINE = InnoDB;

SET SQL_MODE=@OLD_SQL_MODE;

SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;

SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;

I generated this out of an erd diagram and I can't insert any information in the database because I get:

ERROR 1452: Cannot add or update a child row: a foreign key constraint fails (nj1368843.Teachers, CONSTRAINT fk_Teachers_Users1 FOREIGN KEY (Users_idUsers, Users_pw) REFERENCES Users (idUsers, UserName) ON DELETE NO ACTION ON UPDATE NO ACTION)

SQL Statement:

INSERT INTO nj1368843.Teachers (idTeachers, Lname, Fname, Users_idUsers, Users_pw) VALUES (105, 'Stacey', 'Sheila', 1, '123')

I tried everyone's ideas and looked over the code a million times and still can't find the problem. I can't insert into none of the tables for this db.help.

0

There are 0 best solutions below