First of all the referenced key must be on PRIMARY KEY. But I've seen in your table definition a quite strange thing. You have a UNIQUE and an ORDINARY key definition on the same field. Here:
... > UNIQUE KEY `name_id` (`name_id`), <- THIS IS THE FIRST DEFINITION > UNIQUE KEY `comp_name` (`comp_name`), > KEY `conn_idx` (`name_id`) <- AND THIS IS THE SECOND ONE ... At 10:59 2002.06.10. +0300, you wrote: >Hello list! > >I'm having a bit of trouble getting foreign key constraints to work. >I'm running MySQL 2.23.50-Max. > >Here's what I got: > >mysql> SHOW CREATE TABLE conn\G >*************************** 1. row *************************** > Table: conn >Create Table: CREATE TABLE `conn` ( > `id` int(10) unsigned NOT NULL auto_increment, > `wall_nr` int(10) unsigned NOT NULL default '0', > `hub_switch` varchar(20) NOT NULL default '', > `comp_name` varchar(80) NOT NULL default '', > `name_id` int(10) unsigned NOT NULL default '0', > PRIMARY KEY (`id`), > UNIQUE KEY `name_id` (`name_id`), > UNIQUE KEY `comp_name` (`comp_name`), > KEY `conn_idx` (`name_id`) >) TYPE=InnoDB >1 row in set (0.00 sec) > >mysql> SHOW CREATE TABLE ip_name_tbl\G >*************************** 1. row *************************** > Table: ip_name_tbl >Create Table: CREATE TABLE `ip_name_tbl` ( > `id` int(10) unsigned NOT NULL auto_increment, > `comp_loc` smallint(5) unsigned NOT NULL default '0', > `comp_sub_loc` smallint(5) unsigned NOT NULL default '0', > `ip_stat_dyn` enum('DHCP','STATIC') NOT NULL default 'DHCP', > `IP` varchar(15) default NULL, > `MAC` varchar(17) NOT NULL default '', > `network` enum('Hallinto','Asiakas') NOT NULL default 'Hallinto', > `name_id` int(11) NOT NULL default '0', > `comments` text, > PRIMARY KEY (`id`), > UNIQUE KEY `name_id` (`name_id`), > KEY `ip_idx` (`name_id`) >) TYPE=InnoDB >1 row in set (0.00 sec) > >Here's what I get: > >mysql> ALTER TABLE ip_name_tbl > -> ADD CONSTRAINT FOREIGN KEY (name_id) > -> REFERENCES conn(name_id) > -> ON DELETE CASCADE; >ERROR 1005: Can't create table './koneet/#sql-355_4.frm' (errno: 150) > >I know error 1005 with an errno 150 means the foreign key would be incorrectly >formed, but I can't just figure out what's wrong. >I've been reading TFM, and the sentence "there must be an index where the >foreign key and the referenced key are listed as the first columns" seems to >have something to do with my problem, I just find the above a bit... well... >cryptic. If anyone could lend me a hand, I'd be more than happy. > >Thank's in advance! > >Cheers, >Markus > >-- >Markus Lervik >Linux-administrator >Vaasa City Library - Regional Library, Finland >[EMAIL PROTECTED] >+358-6-325 3589/+358-40-832 6709 > >--------------------------------------------------------------------- >Before posting, please check: > http://www.mysql.com/manual.php (the manual) > http://lists.mysql.com/ (the list archive) > >To request this thread, e-mail <[EMAIL PROTECTED]> >To unsubscribe, e-mail <[EMAIL PROTECTED]> >Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php --------------------------------------------------------------------- Before posting, please check: http://www.mysql.com/manual.php (the manual) http://lists.mysql.com/ (the list archive) To request this thread, e-mail <[EMAIL PROTECTED]> To unsubscribe, e-mail <[EMAIL PROTECTED]> Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php