Search code examples
mysqlsqlcreate-tablemysql-error-1005

mysql cannot create table - error 1005


I'm a student and I'm just trying out some basic mysql. However I keep getting the same error when it comes to the following piece of code.

Error Code: 1005. Can't create table 'mydatabase.orders' (errno: 150)

CREATE TABLE Customer
(
P_ID int(3) UNSIGNED NOT NULL,
LastName varchar(10) NOT NULL,
FirstName varchar(10) NOT NULL,
Address varchar(20) NOT NULL,
City varchar(10) NOT NULL
);


CREATE TABLE Orders
(
O_ID int(3) UNSIGNED NOT NULL,
OrderNo int NOT NULL,
P_ID int(3) UNSIGNED NOT NULL,
PRIMARY KEY (O_ID),
FOREIGN KEY(P_ID)REFERENCES Customer(P_ID)
);

Solution

  • This should work, there was no PRIMARY KEY on the Customer table.

    EDIT deleted the ON DELETE CASCADE ON UPDATE CASCADE clause, maybe is not needed

    CREATE TABLE Customer(
        P_ID int(3) UNSIGNED NOT NULL,
        LastName varchar(10) NOT NULL,
        FirstName varchar(10) NOT NULL,
        Address varchar(20) NOT NULL,
        City varchar(10) NOT NULL,
        PRIMARY KEY (`P_ID`)
    );
    
    CREATE TABLE Orders(
        O_ID int(3) UNSIGNED NOT NULL,
        OrderNo int(3) NOT NULL,
        P_ID int(3) UNSIGNED NOT NULL,
        PRIMARY KEY (O_ID),
        CONSTRAINT `P_ID` FOREIGN KEY(`P_ID`) REFERENCES `Customer` (`P_ID`)
    );