MySQL Errno 150
foreign-keys, mysql, mysql-workbench
Solution
If you're using the InnoDB engine, the `ON DELETE SET DEFAULT` is your problem. Here's an excerpt from the manual:
While SET DEFAULT is allowed by the MySQL Server, it is rejected as invalid by InnoDB. CREATE TABLE and ALTER TABLE statements using this clause are not allowed for InnoDB tables.
You can use `ON DELETE CASCADE` or `ON DELETE SET NULL`, but not `ON DELETE SET DEFAULT`. There's more information here.
Problem
I'm creating a few simple tables and I can't get passed this foreign key error and I'm not sure why. Here's the script below. ``` create TABLE Instructors ( ID varchar(10), First_Name varchar(50) NOT NULL, Last_Name varchar(50) NOT NULL, PRIMARY KEY (ID) ); create table Courses ( Course_Code varchar(10), Title varchar(50) NOT NULL, PRIMARY KEY (Course_Code) ); create table Sections ( Index_No int, Course_Code varchar(10), Instructor_ID varchar(10), PRIMARY KEY (Index_No), FOREIGN KEY (Course_Code) REFERENCES Courses(Course_Code) ON DELETE cascade ON UPDATE cascade, FOREIGN KEY (Instructor_ID) REFERENCES Instructors(ID) ON DELETE set default ); ``` Error Code: 1005. Can't create table '336_project.sections' (errno: 150) My data types seem identical and the syntax seems correct. Can anyone point out what I'm not seeing here? I'm using MySQL Workbench 5.2