Sample Header Ad - 728x90

MySQL FOREIGN KEY constraint is incorrectly formed

26 votes
6 answers
118142 views
I have the following table definition: CREATE TABLE async_task ( idasync_task bigint(20) unsigned NOT NULL AUTO_INCREMENT, idasync_type int(10) unsigned NOT NULL, priority tinyint(3) NOT NULL, status enum('todo','doing','failed') NOT NULL DEFAULT 'todo', iduser int(11) NOT NULL, date_added datetime NOT NULL, PRIMARY KEY (idasync_task), KEY priority_id (priority,idasync_task), KEY status_type (status,idasync_type) ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8; I've added a column to the my notification table which I want to point to async_task: ALTER TABLE notification ADD COLUMN async_task_id BIGINT(20) And when I add the following foreign key: ALTER TABLE notification ADD CONSTRAINT fk_notification_async_task FOREIGN KEY (async_task_id) REFERENCES async_task(idasync_task); I get: ERROR 1005 (HY000): Can't create table my_database.#sql-182_2d (errno: 150 "Foreign key constraint is incorrectly formed") I've looked elsewhere but only find the errors as being: 1. The table you're referencing is not created (not the case) 2. The table you're referencing is not InnoDB (not the case, both notification and async_task are InnoDB) 3. You're not referencing the entire primary key (not the case, the only primary key is the ID column). What else could it be?
Asked by Daniel Gray (699 rep)
Apr 10, 2018, 02:15 PM
Last activity: Jul 2, 2025, 02:52 PM