Search code examples
mysqldatabasedatabase-designmysql-workbenchmysql-error-1064

MySQL help forward engineering


So I'm trying to deploy the database that I've created on workbench 6.2 onto a real database (to test it out)...

But I keep on getting errors every time I deploy it, and every time I think I've fixed the issue some other error message pops up (this time it's 1064)..

Can anyone please help me out with my database so I can finally deploy it and test things out? (I'm a noob so please be patient with me)..

This is what the forward-engineering is trying to execute:

-- MySQL Workbench Forward Engineering

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,ALLOW_INVALID_DATES';

-- -----------------------------------------------------
-- Schema iPlanner
-- -----------------------------------------------------

-- -----------------------------------------------------
-- Schema iPlanner
-- -----------------------------------------------------
CREATE SCHEMA IF NOT EXISTS `iPlanner` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci ;
USE `iPlanner` ;

-- -----------------------------------------------------
-- Table `iPlanner`.`users`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `iPlanner`.`users` (
  `user_permission` INT NOT NULL,
  `user_login` VARCHAR(45) NULL,
  `user_pass` VARCHAR(45) NULL,
  `pass_attempts` INT NULL,
  `user_f_name` VARCHAR(45) NULL,
  `user_l_name` VARCHAR(45) NULL,
  `user_email` VARCHAR(75) NULL,
  PRIMARY KEY (`user_permission`))
ENGINE = InnoDB;


-- -----------------------------------------------------
-- Table `iPlanner`.`administrators`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `iPlanner`.`administrators` (
  `admin_id` INT NOT NULL AUTO_INCREMENT,
  `user_permission` INT NULL,
  PRIMARY KEY (`admin_id`),
  INDEX `user_permission_idx` (`user_permission` ASC),
  CONSTRAINT `user_permission`
    FOREIGN KEY (`user_permission`)
    REFERENCES `iPlanner`.`users` (`user_permission`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION,
  CONSTRAINT `user_login`
    FOREIGN KEY ()
    REFERENCES `iPlanner`.`users` ()
    ON DELETE NO ACTION
    ON UPDATE NO ACTION,
  CONSTRAINT `user_pass`
    FOREIGN KEY ()
    REFERENCES `iPlanner`.`users` ()
    ON DELETE NO ACTION
    ON UPDATE NO ACTION,
  CONSTRAINT `pass_attempts`
    FOREIGN KEY ()
    REFERENCES `iPlanner`.`users` ()
    ON DELETE NO ACTION
    ON UPDATE NO ACTION,
  CONSTRAINT `user_f_name`
    FOREIGN KEY ()
    REFERENCES `iPlanner`.`users` ()
    ON DELETE NO ACTION
    ON UPDATE NO ACTION,
  CONSTRAINT `user_l_name`
    FOREIGN KEY ()
    REFERENCES `iPlanner`.`users` ()
    ON DELETE NO ACTION
    ON UPDATE NO ACTION,
  CONSTRAINT `user_email`
    FOREIGN KEY ()
    REFERENCES `iPlanner`.`users` ()
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB;


-- -----------------------------------------------------
-- Table `iPlanner`.`schools`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `iPlanner`.`schools` (
  `school_id` INT NOT NULL AUTO_INCREMENT,
  `school_name` VARCHAR(45) NULL,
  `school_city` VARCHAR(75) NULL,
  `school_state` VARCHAR(2) NULL,
  `school_zipcode` VARCHAR(45) NULL,
  `principal_id` INT NOT NULL,
  PRIMARY KEY (`school_id`),
  INDEX `principal_id_idx` (`principal_id` ASC),
  CONSTRAINT `principal_id`
    FOREIGN KEY (`principal_id`)
    REFERENCES `iPlanner`.`administrators` (`admin_id`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB;


-- -----------------------------------------------------
-- Table `iPlanner`.`subject`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `iPlanner`.`subject` (
  `subject_id` INT NOT NULL AUTO_INCREMENT,
  `subject_name` VARCHAR(45) NULL,
  `teacher_id` INT NOT NULL,
  PRIMARY KEY (`subject_id`))
ENGINE = InnoDB;


-- -----------------------------------------------------
-- Table `iPlanner`.`class`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `iPlanner`.`class` (
  `class_id` INT NOT NULL,
  `subject_id` INT NOT NULL,
  `class_name` VARCHAR(75) NULL,
  PRIMARY KEY (`class_id`),
  INDEX `subject_id_idx` (`subject_id` ASC),
  CONSTRAINT `subject_id`
    FOREIGN KEY (`subject_id`)
    REFERENCES `iPlanner`.`subject` (`subject_id`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB;


-- -----------------------------------------------------
-- Table `iPlanner`.`teachers`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `iPlanner`.`teachers` (
  `teacher_id` INT NOT NULL AUTO_INCREMENT,
  `user_permission` INT NULL,
  PRIMARY KEY (`teacher_id`),
  INDEX `user_permission_idx` (`user_permission` ASC),
  CONSTRAINT `user_permission`
    FOREIGN KEY (`user_permission`)
    REFERENCES `iPlanner`.`users` (`user_permission`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION,
  CONSTRAINT `user_login`
    FOREIGN KEY ()
    REFERENCES `iPlanner`.`users` ()
    ON DELETE NO ACTION
    ON UPDATE NO ACTION,
  CONSTRAINT `user_pass`
    FOREIGN KEY ()
    REFERENCES `iPlanner`.`users` ()
    ON DELETE NO ACTION
    ON UPDATE NO ACTION,
  CONSTRAINT `pass_attempts`
    FOREIGN KEY ()
    REFERENCES `iPlanner`.`users` ()
    ON DELETE NO ACTION
    ON UPDATE NO ACTION,
  CONSTRAINT `user_f_name`
    FOREIGN KEY ()
    REFERENCES `iPlanner`.`users` ()
    ON DELETE NO ACTION
    ON UPDATE NO ACTION,
  CONSTRAINT `user_l_name`
    FOREIGN KEY ()
    REFERENCES `iPlanner`.`users` ()
    ON DELETE NO ACTION
    ON UPDATE NO ACTION,
  CONSTRAINT `user_email`
    FOREIGN KEY ()
    REFERENCES `iPlanner`.`users` ()
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB;


-- -----------------------------------------------------
-- Table `iPlanner`.`subject_class`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `iPlanner`.`subject_class` (
  `sc_id` INT NOT NULL AUTO_INCREMENT,
  `class_id` INT NOT NULL,
  `subject_id` INT NOT NULL,
  `teacher_id` INT NOT NULL,
  PRIMARY KEY (`sc_id`),
  INDEX `class_id_idx` (`class_id` ASC),
  INDEX `subject_id_idx` (`subject_id` ASC),
  INDEX `teacher_id_idx` (`teacher_id` ASC),
  CONSTRAINT `class_id`
    FOREIGN KEY (`class_id`)
    REFERENCES `iPlanner`.`class` (`class_id`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION,
  CONSTRAINT `subject_id`
    FOREIGN KEY (`subject_id`)
    REFERENCES `iPlanner`.`subject` (`subject_id`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION,
  CONSTRAINT `teacher_id`
    FOREIGN KEY (`teacher_id`)
    REFERENCES `iPlanner`.`teachers` (`teacher_id`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB;


-- -----------------------------------------------------
-- Table `iPlanner`.`students`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `iPlanner`.`students` (
  `student_id` INT NOT NULL AUTO_INCREMENT,
  `user_permission` INT NULL,
  `signature` VARCHAR(150) NULL,
  PRIMARY KEY (`student_id`),
  INDEX `user_permission_idx` (`user_permission` ASC),
  CONSTRAINT `user_permission`
    FOREIGN KEY (`user_permission`)
    REFERENCES `iPlanner`.`users` (`user_permission`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION,
  CONSTRAINT `user_login`
    FOREIGN KEY ()
    REFERENCES `iPlanner`.`users` ()
    ON DELETE NO ACTION
    ON UPDATE NO ACTION,
  CONSTRAINT `user_pass`
    FOREIGN KEY ()
    REFERENCES `iPlanner`.`users` ()
    ON DELETE NO ACTION
    ON UPDATE NO ACTION,
  CONSTRAINT `pass_attempts`
    FOREIGN KEY ()
    REFERENCES `iPlanner`.`users` ()
    ON DELETE NO ACTION
    ON UPDATE NO ACTION,
  CONSTRAINT `user_f_name`
    FOREIGN KEY ()
    REFERENCES `iPlanner`.`users` ()
    ON DELETE NO ACTION
    ON UPDATE NO ACTION,
  CONSTRAINT `user_l_name`
    FOREIGN KEY ()
    REFERENCES `iPlanner`.`users` ()
    ON DELETE NO ACTION
    ON UPDATE NO ACTION,
  CONSTRAINT `user_email`
    FOREIGN KEY ()
    REFERENCES `iPlanner`.`users` ()
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB;


-- -----------------------------------------------------
-- Table `iPlanner`.`enrollment`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `iPlanner`.`enrollment` (
  `enrollment_id` INT NOT NULL AUTO_INCREMENT,
  `subject_class_id` INT NOT NULL,
  `student_id` INT NOT NULL,
  PRIMARY KEY (`enrollment_id`),
  INDEX `subject_class_id_idx` (`subject_class_id` ASC),
  INDEX `student_id_idx` (`student_id` ASC),
  CONSTRAINT `subject_class_id`
    FOREIGN KEY (`subject_class_id`)
    REFERENCES `iPlanner`.`subject_class` (`sc_id`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION,
  CONSTRAINT `student_id`
    FOREIGN KEY (`student_id`)
    REFERENCES `iPlanner`.`students` (`student_id`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB;


-- -----------------------------------------------------
-- Table `iPlanner`.`assignments`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `iPlanner`.`assignments` (
  `assignment_id` INT NOT NULL AUTO_INCREMENT,
  `assignment_content` VARCHAR(45) NULL,
  `assignment_due_date` VARCHAR(45) NULL,
  `assignment_date` VARCHAR(45) NULL,
  `assignment_time` VARCHAR(45) NULL,
  `subject_class_id` INT NOT NULL,
  PRIMARY KEY (`assignment_id`),
  INDEX `subject_class_id_idx` (`subject_class_id` ASC),
  CONSTRAINT `subject_class_id`
    FOREIGN KEY (`subject_class_id`)
    REFERENCES `iPlanner`.`subject_class` (`sc_id`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB;


-- -----------------------------------------------------
-- Table `iPlanner`.`submits`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `iPlanner`.`submits` (
  `submit_id` INT NOT NULL AUTO_INCREMENT,
  `student_id` INT NOT NULL,
  `assignment_id` INT NOT NULL,
  `notes_teacher` VARCHAR(45) NULL,
  `notes_parents` VARCHAR(45) NULL,
  `parent_signature` VARCHAR(45) NULL,
  `total_time` VARCHAR(45) NULL,
  PRIMARY KEY (`submit_id`),
  INDEX `assignment_id_idx` (`assignment_id` ASC),
  INDEX `student_id_idx` (`student_id` ASC),
  CONSTRAINT `assignment_id`
    FOREIGN KEY (`assignment_id`)
    REFERENCES `iPlanner`.`assignments` (`assignment_id`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION,
  CONSTRAINT `student_id`
    FOREIGN KEY (`student_id`)
    REFERENCES `iPlanner`.`students` (`student_id`)
    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;

And this is the current error that I'm getting..

Executing SQL script in server
ERROR: Error 1064: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ')
    REFERENCES `iPlanner`.`users` ()
    ON DELETE NO ACTION
    ON UPDATE NO ' at line 12
SQL Code:
        CREATE TABLE IF NOT EXISTS `iPlanner`.`administrators` (
          `admin_id` INT NOT NULL AUTO_INCREMENT,
          `user_permission` INT NULL,
          PRIMARY KEY (`admin_id`),
          INDEX `user_permission_idx` (`user_permission` ASC),
          CONSTRAINT `user_permission`
            FOREIGN KEY (`user_permission`)
            REFERENCES `iPlanner`.`users` (`user_permission`)
            ON DELETE NO ACTION
            ON UPDATE NO ACTION,
          CONSTRAINT `user_login`
            FOREIGN KEY ()
            REFERENCES `iPlanner`.`users` ()
            ON DELETE NO ACTION
            ON UPDATE NO ACTION,
          CONSTRAINT `user_pass`
            FOREIGN KEY ()
            REFERENCES `iPlanner`.`users` ()
            ON DELETE NO ACTION
            ON UPDATE NO ACTION,
          CONSTRAINT `pass_attempts`
            FOREIGN KEY ()
            REFERENCES `iPlanner`.`users` ()
            ON DELETE NO ACTION
            ON UPDATE NO ACTION,
          CONSTRAINT `user_f_name`
            FOREIGN KEY ()
            REFERENCES `iPlanner`.`users` ()
            ON DELETE NO ACTION
            ON UPDATE NO ACTION,
          CONSTRAINT `user_l_name`
            FOREIGN KEY ()
            REFERENCES `iPlanner`.`users` ()
            ON DELETE NO ACTION
            ON UPDATE NO ACTION,
          CONSTRAINT `user_email`
            FOREIGN KEY ()
            REFERENCES `iPlanner`.`users` ()
            ON DELETE NO ACTION
            ON UPDATE NO ACTION)
        ENGINE = InnoDB

SQL script execution finished: statements: 8 succeeded, 1 failed

Fetching back view definitions in final form.
Nothing to fetch
Executing SQL script in server
ERROR: Error 1064: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ')
    REFERENCES `iPlanner`.`users` ()
    ON DELETE NO ACTION
    ON UPDATE NO ' at line 15
SQL Code:
        -- -----------------------------------------------------
        -- Table `iPlanner`.`administrators`
        -- -----------------------------------------------------
        CREATE TABLE IF NOT EXISTS `iPlanner`.`administrators` (
          `admin_id` INT NOT NULL AUTO_INCREMENT,
          `user_permission` INT NULL,
          PRIMARY KEY (`admin_id`),
          INDEX `user_permission_idx` (`user_permission` ASC),
          CONSTRAINT `user_permission`
            FOREIGN KEY (`user_permission`)
            REFERENCES `iPlanner`.`users` (`user_permission`)
            ON DELETE NO ACTION
            ON UPDATE NO ACTION,
          CONSTRAINT `user_login`
            FOREIGN KEY ()
            REFERENCES `iPlanner`.`users` ()
            ON DELETE NO ACTION
            ON UPDATE NO ACTION,
          CONSTRAINT `user_pass`
            FOREIGN KEY ()
            REFERENCES `iPlanner`.`users` ()
            ON DELETE NO ACTION
            ON UPDATE NO ACTION,
          CONSTRAINT `pass_attempts`
            FOREIGN KEY ()
            REFERENCES `iPlanner`.`users` ()
            ON DELETE NO ACTION
            ON UPDATE NO ACTION,
          CONSTRAINT `user_f_name`
            FOREIGN KEY ()
            REFERENCES `iPlanner`.`users` ()
            ON DELETE NO ACTION
            ON UPDATE NO ACTION,
          CONSTRAINT `user_l_name`
            FOREIGN KEY ()
            REFERENCES `iPlanner`.`users` ()
            ON DELETE NO ACTION
            ON UPDATE NO ACTION,
          CONSTRAINT `user_email`
            FOREIGN KEY ()
            REFERENCES `iPlanner`.`users` ()
            ON DELETE NO ACTION
            ON UPDATE NO ACTION)
        ENGINE = InnoDB

SQL script execution finished: statements: 6 succeeded, 1 failed

Fetching back view definitions in final form.
Nothing to fetch

Solution

  • Edit 1064 simply means "syntax error." If you're getting that when you try to run SQL created by a tool like Workbench, it either means the tool has a bug or you've used it incorrectly.

    When MySQL detects the error, it puts out the words for the right syntax to use near and then shows some of your query, starting with the first character in your query it didn't understand. That's to help you figure out where your problem might lie.

    In your question, that's a close parenthesis. That means to me that it's expecting something to appear between your parentheses in your REFERENCES clause.

    It looks to me like your model's administrators table has a lot of ill-formed foreign keys back to the users table.

    Here's just one of them.

         CONSTRAINT `user_login`
            FOREIGN KEY ()
            REFERENCES `iPlanner`.`users` ()
            ON DELETE NO ACTION
            ON UPDATE NO ACTION,
    

    Notice the (): It references the table but no column.