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
648187
March 24, 2005 01:20PM
5370
October 09, 2012 09:48PM
3630
December 19, 2011 10:13PM
9084
May 09, 2006 06:01PM
8269
November 15, 2006 02:05PM
Re: Solved! Re: ERROR 1005: Can't create table (errno: 150) :: InnoDB
6412
June 26, 2009 10:23AM
7310
T D
February 01, 2008 06:47AM
9119
August 27, 2008 08:08AM
9616
December 03, 2008 10:15AM
6096
May 01, 2009 07:39AM
3362
August 29, 2011 04:46PM
4930
s l
December 15, 2009 01:48PM
4861
December 22, 2009 02:54AM
3180
February 18, 2011 08:55AM
3770
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.