Search code examples
mysqlforeign-keysconstraintsmysql-error-1005

It continues to show an "error 1005 can't create table registration.panepistimio (errno:150)


CREATE DATABASE IF NOT EXISTS PANEPISTIMIO DEFAULT CHARSET=greek;

USE PANEPISTIMIO;

CREATE TABLE student(
name_stud VARCHAR(25) NOT NULL,
surname_stud VARCHAR(25) NOT NULL,
id_stud INT(5) NOT NULL,

PRIMARY KEY(id_stud)
)ENGINE = InnoDB CHARACTER set greek COLLATE greek_general_ci;

CREATE TABLE proffesor(
name_prof VARCHAR(25) NOT NULL,
surname_prof VARCHAR(25) NOT NULL,
email_prof VARCHAR(255) NOT NULL,

PRIMARY KEY(email_prof)
)ENGINE = InnoDB CHARACTER set greek COLLATE greek_general_ci;

CREATE TABLE cource(
cource_title VARCHAR(255) NOT NULL,
cource_id INT(4) NOT NULL,
upeuthinos VARCHAR(255) NOT NULL,
cource_resume TEXT ,

PRIMARY KEY(cource_id),


CONSTRAINT CRSPROFFESOR
 FOREIGN KEY(upeuthinos) REFERENCES proffesor(email_prof)
ON DELETE CASCADE ON UPDATE CASCADE
)ENGINE = InnoDB CHARACTER set greek COLLATE greek_general_ci;


CREATE TABLE books(
book_title VARCHAR(128) NOT NULL,
mathima_vivliou INT(4) NOT NULL,

PRIMARY KEY(book_title,mathima_vivliou),

CONSTRAINT CRSCOURCEX
 FOREIGN KEY(mathima_vivliou) REFERENCES cource(cource_id)
ON DELETE CASCADE ON UPDATE CASCADE
)ENGINE = InnoDB CHARACTER set greek COLLATE greek_general_ci;


CREATE TABLE DIALEKSI(
ar_dialeksis INT(2) NOT NULL,
kwd_mathimatos INT(4) NOT NULL,
thema VARCHAR(128),

PRIMARY KEY(ar_dialeksis,kwd_mathimatos),

CONSTRAINT CRSCOURCEXX
 FOREIGN KEY(kwd_mathimatos) REFERENCES cource(cource_id)
ON DELETE CASCADE ON UPDATE CASCADE
)ENGINE = InnoDB CHARACTER set greek COLLATE greek_general_ci;


CREATE TABLE registration(
eggegrammenos VARCHAR(25) NOT NULL,
mathima INT(4) NOT NULL,
imerominia_eggrafis DATE NOT NULL,

PRIMARY KEY(eggegrammenos,mathima),

CONSTRAINT CRSSTUD
 FOREIGN KEY(eggegrammenos) REFERENCES student(name_stud)
ON DELETE CASCADE ON UPDATE CASCADE,

CONSTRAINT CRSCOURCE
 FOREIGN KEY(mathima) REFERENCES cource(cource_id)
ON DELETE CASCADE ON UPDATE CASCADE
)ENGINE = InnoDB CHARACTER set greek COLLATE greek_general_ci;

Solution

  • name_stud is not a primary key in student table!!!!. you're trying to make the "eggegrammenos" a foreign key in registration table and referencing it to a non primary key variable in student.

    Hope this helps!