MySQL Forums
Forum List  »  InnoDB

Re: Solved! Re: ERROR 1005: Can't create table (errno: 150) :: InnoDB
Posted by: Roland Booth
Date: June 26, 2009 10:23AM

Here is my example and some pointers that lead a soln to my problem.

'contact_id' in table 'note' referencing 'id' in table 'contact'

CREATE TABLE `contact` (
`id` int(10) unsigned NOT NULL auto_increment COMMENT 'Unique Contact ID',
PRIMARY KEY (`id`),
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=0 ;

CREATE TABLE `note` (
`id` int(10) unsigned NOT NULL auto_increment COMMENT 'Note ID',
`entity_table` varchar(64) collate utf8_unicode_ci NOT NULL COMMENT 'Name of table where item being referenced is stored.',
`entity_id` int(10) unsigned NOT NULL COMMENT 'Foreign key to the referenced item.',
`contact_id` int(10) unsigned default NULL COMMENT 'FK to Contact ID creator',
PRIMARY KEY (`id`),
KEY `index_entity` (`entity_table`,`entity_id`),
KEY `FK_note_contact_id` (`contact_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=0;

ALTER TABLE `note`
ADD CONSTRAINT `FK_note_contact_id` FOREIGN KEY (`contact_id`) REFERENCES `contact` (`id`) ON DELETE SET NULL;

Things to note

1. Tables must be same type. [in this case InnoDB]
2. The columns must be the same type.[in this case int(10)]
3. The Attributes must be the same unsigned
4. The field that is referencing must be default set to null "default NULL"
i.e. contact_id , must be default NULL. (If you specify a SET NULL action, make sure that you have not declared the columns in the child table as NOT NULL.)
5. Indexes on foreign keys and referenced keys

Useful reference:
http://dev.mysql.com/doc/refman/5.0/en/innodb-foreign-key-constraints.html

Options: ReplyQuote


Subject
Views
Written By
Posted
649754
March 24, 2005 01:20PM
5567
October 09, 2012 09:48PM
3768
December 19, 2011 10:13PM
9290
May 09, 2006 06:01PM
8431
November 15, 2006 02:05PM
Re: Solved! Re: ERROR 1005: Can't create table (errno: 150) :: InnoDB
6568
June 26, 2009 10:23AM
7444
T D
February 01, 2008 06:47AM
9294
August 27, 2008 08:08AM
9806
December 03, 2008 10:15AM
6277
May 01, 2009 07:39AM
3524
August 29, 2011 04:46PM
5127
s l
December 15, 2009 01:48PM
5041
December 22, 2009 02:54AM
3283
February 18, 2011 08:55AM
3969
May 24, 2011 10:11AM


Sorry, you can't reply to this topic. It has been closed.

Content reproduced on this site is the property of the respective copyright holders. It is not reviewed in advance by Oracle and does not necessarily represent the opinion of Oracle or any other party.