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
648585
March 24, 2005 01:20PM
5421
October 09, 2012 09:48PM
3676
December 19, 2011 10:13PM
9146
May 09, 2006 06:01PM
8319
November 15, 2006 02:05PM
Re: Solved! Re: ERROR 1005: Can't create table (errno: 150) :: InnoDB
6456
June 26, 2009 10:23AM
7362
T D
February 01, 2008 06:47AM
9177
August 27, 2008 08:08AM
9674
December 03, 2008 10:15AM
6154
May 01, 2009 07:39AM
3417
August 29, 2011 04:46PM
5000
s l
December 15, 2009 01:48PM
4924
December 22, 2009 02:54AM
3222
February 18, 2011 08:55AM
3837
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.