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
Last activity: Jul 2, 2025, 02:52 PM