waterhouse533-lp
Erfahrenes Mitglied
hallo leute,
ich habe eine datenbank mit mehreren innodb-tabellen angelegt. jetzt moechte ich foreign keys hinzufuegen. bei einigen tabellen funktioniert das sehr gut, bei anderen gar nicht.
als beispiel sollen diese beide create-statements dienen:
'region_markt', 'CREATE TABLE `region_markt` (
`regionnr` smallint(6) NOT NULL default '0',
`marktnr` int(11) NOT NULL default '0',
`cdc` int(11) NOT NULL default '0',
`netstate` char(3) NOT NULL default 'C',
PRIMARY KEY (`regionnr`,`marktnr`),
KEY `Regionnr` (`regionnr`),
CONSTRAINT `Regionnr` FOREIGN KEY (`regionnr`) REFERENCES `region` (`regionnr`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1'
'markt', 'CREATE TABLE `markt` (
`marktnr` int(11) NOT NULL default '0',
`bezeichnung` varchar(80) NOT NULL default '',
PRIMARY KEY (`marktnr`),
KEY `Hauptlieferant` (`hauptlieferant`),
CONSTRAINT `Hauptlieferant` FOREIGN KEY (`hauptlieferant`) REFERENCES `lieferant` (`lieferantnr`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1'
die beiden tabellen haben nach dem erstellen schon einen fk erhalten, jetzt soll region_markt einen weiteren bekommen:
ALTER TABLE `REGION_MARKT` ADD CONSTRAINT `Marktnr` FOREIGN KEY `Marktnr` (`Marktnr`) REFERENCES `MARKT` (`Marktnr`) ON DELETE RESTRICT ON UPDATE RESTRICT;
als resultat bekomme ich:
mysql error number 1005 , can't create table #sql_fd0_1.frm (errno:121)
wieso?
oder besser gesagt, wie loese ich dieses problem
ich habe eine datenbank mit mehreren innodb-tabellen angelegt. jetzt moechte ich foreign keys hinzufuegen. bei einigen tabellen funktioniert das sehr gut, bei anderen gar nicht.
als beispiel sollen diese beide create-statements dienen:
'region_markt', 'CREATE TABLE `region_markt` (
`regionnr` smallint(6) NOT NULL default '0',
`marktnr` int(11) NOT NULL default '0',
`cdc` int(11) NOT NULL default '0',
`netstate` char(3) NOT NULL default 'C',
PRIMARY KEY (`regionnr`,`marktnr`),
KEY `Regionnr` (`regionnr`),
CONSTRAINT `Regionnr` FOREIGN KEY (`regionnr`) REFERENCES `region` (`regionnr`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1'
'markt', 'CREATE TABLE `markt` (
`marktnr` int(11) NOT NULL default '0',
`bezeichnung` varchar(80) NOT NULL default '',
PRIMARY KEY (`marktnr`),
KEY `Hauptlieferant` (`hauptlieferant`),
CONSTRAINT `Hauptlieferant` FOREIGN KEY (`hauptlieferant`) REFERENCES `lieferant` (`lieferantnr`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1'
die beiden tabellen haben nach dem erstellen schon einen fk erhalten, jetzt soll region_markt einen weiteren bekommen:
ALTER TABLE `REGION_MARKT` ADD CONSTRAINT `Marktnr` FOREIGN KEY `Marktnr` (`Marktnr`) REFERENCES `MARKT` (`Marktnr`) ON DELETE RESTRICT ON UPDATE RESTRICT;
als resultat bekomme ich:
mysql error number 1005 , can't create table #sql_fd0_1.frm (errno:121)
wieso?
oder besser gesagt, wie loese ich dieses problem