database - Error Code 1022 in MySQL -


i'm pretty new database processing. i'm trying create table

assignment (projectid, employeenumber, hoursworked)

projectid , employeenumber composite primary keys of table assignment , foreign keys of tables project , employee (see below)

here data:

create table if not exists assignment( projectid int(4) not null auto_increment, employeenumber int(4) not null, hoursworked int(4) not null, primary key (projectid), unique (employeenumber), key projectfk (projectid), key employeefk (employeenumber), constraint projectfk foreign key (projectid) references project(projectid) on delete cascade, constraint employeefk foreign key (employeenumber) references employee(employeenumber) );

i've seen lot of examples 1 makes instance unique mysql doesn't allow 2 primary keys in 1 table so made employeenumber unique key.

here data entire schema:

create schema if not exists wpc;

create table if not exists department( department char(30) not null default 'human resources', budgetcode int(20) not null, officenumber int(10) not null, phone char(12) null, primary key (department));

create table if not exists employee( employeenumber int(4) not null auto_increment, firstname char(25) not null, lastname char(25) not null, department char(30) not null, phone char(17) null, email varchar(100) not null, primary key (employeenumber), unique key email (email), key departmentfk (department), constraint departmentfk foreign key (department) references department(department) on delete restrict on update cascade );

create table if not exists project( projectid int(4) auto_increment, projectname char(20) not null, department char(30) not null, maxhours int(14) not null default 100, startdate char(10) not null, enddate char(10) null, primary key (projectid), key projectfk (department), constraint projectfk foreign key (department) references department(department) on delete restrict on update cascade ) engine=innodb auto_increment=1000;

set @@auto_increment_increment=100;

create table if not exists assignment( projectid int(4) not null auto_increment, employeenumber int(4) not null, hoursworked int(4) not null, primary key (projectid), unique (employeenumber), key projectfk (projectid), key employeefk (employeenumber), constraint projectfk foreign key (projectid) references project(projectid) on delete cascade, constraint employeefk foreign key (employeenumber) references employee(employeenumber) );

projectid , employeenumber composite primary keys in table assignment. foreign keys reference tables project , employee.

everything database fine except assignment table. when run script assignment response:

error code: 1022. can't write; duplicate key in table 'assignment'.

the names used foreign key constraints must unique in database. you're attempting use same name fks on different tables.

you're using name projectfk on project table, , attempting use same name again on assignment table.

change fk constraint name on 1 of tables.


Comments