I keep getting an issue with creating this table in my database. The issue is:
Error:1215 Cannot add foreign key constraint.
This is the table I am trying to make:
CREATE TABLE Customer ( customer_reference int UNIQUE AUTO_INCREMENT, primary key (customer_reference), forename VARCHAR(20), surname VARCHAR(20), contact VARCHAR(15), email VARCHAR(50), building VARCHAR(5), road VARCHAR(40), city VARCHAR(30), postcode VARCHAR(7), county VARCHAR(30));
CREATE TABLE Invoice ( invoice_reference int UNIQUE AUTO_INCREMENT, customer_reference int UNIQUE, primary key (invoice_reference), foreign key (customer_reference) references Customer(customer_reference), invoice_cost DECIMAL(20,2), paid bit, order_date DATETIME, delivery_date DATE);
CREATE TABLE Stock ( container VARCHAR(10) UNIQUE NOT NULL DEFAULT 0, primary key (container), SBADNLon INT(4), SBADNFel INT(4), SBADNSou INT(4), CHECK (container = ("SBADN-Lon" > 0, "SBADN-Fel" > 0, "SBADN-Sou" > 0))); /* This is just showing 3 of the possible container variations Each attribute stores a value containing the number of that model available in inventory */
CREATE TABLE Items_Purchased ( container_ordered VARCHAR(10) NOT NULL, invoice_reference int, container VARCHAR(10) NOT NULL DEFAULT "None", container_cost decimal(20,2) NULL, container_size VARCHAR(6) NOT NULL, colour VARCHAR(5) NOT NULL, grade CHAR(1) NOT NULL, depot VARCHAR(15) NOT NULL, container_type VARCHAR(20) NOT NULL, conditionn VARCHAR(4) NOT NULL, primary key (container_ordered, container_size, colour, grade, depot, container_type, conditionn), foreign key (invoice_reference) references Invoice (invoice_reference), foreign key (container) references Stock (container), foreign key (container_size) references Container_Size (container_size), foreign key (colour) references Colour (colour), foreign key (grade) references Grade (grade), foreign key (depot) references Depot (depot), foreign key (container_type) references Container_Type (container_type), foreign key (conditionn) references Conditionn (conditionn));
CREATE TABLE Depot ( depot VARCHAR(15) NOT NULL, container_ordered VARCHAR(10) NOT NULL, primary key (depot), foreign key (container_ordered) references Items_Purchased(container_ordered), CHECK (depot = ("london","felixstowe","southampton")));
CREATE TABLE Container_Type ( container_type VARCHAR(20) NOT NULL, container_ordered VARCHAR(10) NOT NULL, primary key (container_type), foreign key (container_ordered) references Items_Purchased(container_ordered), CHECK (container_type = ("dry","inslated","refreigerated","open top","tunnel")));
CREATE TABLE Container_Size ( container_size VARCHAR(6) NOT NULL, container_ordered VARCHAR(10) NOT NULL, primary key (container_size), foreign key (container_ordered) references Items_Purchased(container_ordered), CHECK (container_size = ("small","medium","large")));
CREATE TABLE Colour ( colour VARCHAR(5) NOT NULL, container_ordered VARCHAR(10) NOT NULL, primary key (colour), foreign key (container_ordered) references Items_Purchased(container_ordered), CHECK (colour = ("black","green")));
CREATE TABLE Conditionn ( conditionn VARCHAR(4) NOT NULL, container_ordered VARCHAR(10) NOT NULL, primary key (conditionn), foreign key (container_ordered) references Items_Purchased(container_ordered), CHECK (conditionn = ("new","used")));
CREATE TABLE Grade ( grade CHAR(1) NOT NULL, container_ordered VARCHAR(10) NOT NULL, primary key (grade), foreign key (container_ordered) references Items_Purchased(container_ordered), CHECK (grade = ("a","b","c")));
Thanks in advance