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

Reply via email to