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
647734
March 24, 2005 01:20PM
5316
October 09, 2012 09:48PM
3595
December 19, 2011 10:13PM
9031
May 09, 2006 06:01PM
8214
November 15, 2006 02:05PM
Re: Solved! Re: ERROR 1005: Can't create table (errno: 150) :: InnoDB
6369
June 26, 2009 10:23AM
7261
T D
February 01, 2008 06:47AM
9073
August 27, 2008 08:08AM
9579
December 03, 2008 10:15AM
6037
May 01, 2009 07:39AM
3300
August 29, 2011 04:46PM
4877
s l
December 15, 2009 01:48PM
4811
December 22, 2009 02:54AM
3134
February 18, 2011 08:55AM
3721
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.