Saturday 15 August 2015

Forward engineering mysql Foreign key -



Forward engineering mysql Foreign key -

im trying forwards engineer eer diagram in mysql workbench seem not able ive got couple 1 many relationships , changed names of foreign keys no avail :( error log

executing sql script in server error: error 1005: can't create table 'lagerprogram.werkzeugsätze_gierth' (errno: 150) sql code: -- ----------------------------------------------------- -- table `lagerprogram`.`werkzeugsätze_gierth` -- ----------------------------------------------------- create table if not exists `lagerprogram`.`werkzeugsätze_gierth` ( `werkzeugführung` varchar(45) not null, `messerhalter` varchar(45) not null, `zentrierkronen` varchar(45) not null, `spanvorichtung` varchar(45) not null, `werkzeugsatzq` varchar(45) not null, primary key (`werkzeugführung`, `messerhalter`, `zentrierkronen`, `spanvorichtung`), index `fk_werkzeugsätze_gierth_maschinen_idx` (`werkzeugsatzq` asc), constraint `fk_werkzeugsätze_gierth_maschinen` foreign key (`werkzeugsatzq`) references `lagerprogram`.`maschinen` (`werkzeugsatz`) on delete no action on update no action) engine = innodb sql script execution finished: statements: 6 succeeded, 1 failed fetching view definitions in final form. nil fetch

and create statement

create schema if not exists `lagerprogram` default character set utf8 collate utf8_general_ci ; utilize `lagerprogram` ; -- ----------------------------------------------------- -- table `lagerprogram`.`maschinen` -- ----------------------------------------------------- create table if not exists `lagerprogram`.`maschinen` ( `typ` varchar(50) not null, `werkzeugsatz` varchar(45) not null, `maschinenkörper` varchar(45) not null, `elektrik` varchar(45) not null, `pneumatic` varchar(45) not null, `hydraulik` varchar(45) not null, `kühlvorrichtung` varchar(45) not null, `vorschubeinheit` varchar(45) not null, primary key (`typ`, `werkzeugsatz`, `maschinenkörper`, `elektrik`, `pneumatic`, `hydraulik`, `kühlvorrichtung`, `vorschubeinheit`)) engine = innodb; -- ----------------------------------------------------- -- table `lagerprogram`.`werkzeugsätze_gierth` -- ----------------------------------------------------- create table if not exists `lagerprogram`.`werkzeugsätze_gierth` ( `werkzeugführung` varchar(45) not null, `messerhalter` varchar(45) not null, `zentrierkronen` varchar(45) not null, `spanvorichtung` varchar(45) not null, `werkzeugsatzq` varchar(45) not null, primary key (`werkzeugführung`, `messerhalter`, `zentrierkronen`, `spanvorichtung`), index `fk_werkzeugsätze_gierth_maschinen_idx` (`werkzeugsatzq` asc), constraint `fk_werkzeugsätze_gierth_maschinen` foreign key (`werkzeugsatzq`) references `lagerprogram`.`maschinen` (`werkzeugsatz`) on delete no action on update no action) engine = innodb; -- ----------------------------------------------------- -- table `lagerprogram`.`werkzeugführungen` -- ----------------------------------------------------- create table if not exists `lagerprogram`.`werkzeugführungen` ( `länge` int null, `wf_komplett` varchar(45) null, `jahresbedarf` varchar(45) null, `flansch` varchar(45) not null, `oberteilführung` varchar(45) not null, `flansch_mit_führung` varchar(45) not null, `passfeder` varchar(45) not null, `typq` varchar(45) not null, primary key (`flansch`, `oberteilführung`, `flansch_mit_führung`, `passfeder`), index `fk_werkzeugführungen_werkzeugsätze_gierth1_idx` (`typq` asc), constraint `fk_werkzeugführungen_werkzeugsätze_gierth1` foreign key (`typq`) references `lagerprogram`.`werkzeugsätze_gierth` (`werkzeugführung`) on delete no action on update no action) engine = innodb; -- ----------------------------------------------------- -- table `lagerprogram`.`flansch` -- ----------------------------------------------------- create table if not exists `lagerprogram`.`flansch` ( `bestellt` int not null, `fertigung` int null, `lieferant` varchar(50) null, `lager` int null, `lagerplatz` varchar(45) null, `gewicht` decimal null, `e_k_preis` decimal null, `v_k_preis` decimal null, `flanschq` varchar(45) not null, primary key (`bestellt`), index `fk_flansch_werkzeugführungen1_idx` (`flanschq` asc), constraint `fk_flansch_werkzeugführungen1` foreign key (`flanschq`) references `lagerprogram`.`werkzeugführungen` (`flansch`) on delete no action on update no action) engine = innodb; set sql_mode=@old_sql_mode; set foreign_key_checks=@old_foreign_key_checks; set unique_checks=@old_unique_checks;

the column referenced in foreign key needs have index on it. need alter definition of maschinen table to:

create table if not exists `lagerprogram`.`maschinen` ( `typ` varchar(50) not null, `werkzeugsatz` varchar(45) not null, `maschinenkörper` varchar(45) not null, `elektrik` varchar(45) not null, `pneumatic` varchar(45) not null, `hydraulik` varchar(45) not null, `kühlvorrichtung` varchar(45) not null, `vorschubeinheit` varchar(45) not null, primary key (`typ`, `werkzeugsatz`, `maschinenkörper`, `elektrik`, `pneumatic`, `hydraulik`, `kühlvorrichtung`, `vorschubeinheit`), key (`werkzeugsatz`)) engine = innodb;

or can alter order of columns in primary key werkzeugsatz first:

primary key (`werkzeugsatz`, `typ`, `maschinenkörper`, `elektrik`, `pneumatic`, `hydraulik`, `kühlvorrichtung`, `vorschubeinheit`)

mysql mysql-workbench reverse-engineering

No comments:

Post a Comment