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
648388
March 24, 2005 01:20PM
5405
October 09, 2012 09:48PM
3656
December 19, 2011 10:13PM
9121
May 09, 2006 06:01PM
8302
November 15, 2006 02:05PM
Re: Solved! Re: ERROR 1005: Can't create table (errno: 150) :: InnoDB
6438
June 26, 2009 10:23AM
7346
T D
February 01, 2008 06:47AM
9157
August 27, 2008 08:08AM
9651
December 03, 2008 10:15AM
6130
May 01, 2009 07:39AM
3395
August 29, 2011 04:46PM
4977
s l
December 15, 2009 01:48PM
4903
December 22, 2009 02:54AM
3212
February 18, 2011 08:55AM
3817
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.