MariaDB errno: 150 "Foreign key constraint is incorrectly formed"
Всем привет! Никак не могу понять, почему при создании таблицы с внешним ключом ловлю ошибку.
CREATE TABLE users (
id INT NOT NULL AUTO_INCREMENT, PRIMARY KEY (int),
username VARCHAR(16) NOT NULL,
password VARCHAR(16) NOT NULL,
) ENGINE=InnoDB CHARSET=utf8 COLLATE utf8_general_ci;
CREATE TABLE tasks (
login VARCHAR(16) NOT NULL,
countOfTask INT NOT NULL,
taskName VARCHAR(64) NOT NULL,
CONSTRAINT `tasks_desc`
FOREIGN KEY (login) REFERENCES users (username)
) ENGINE=InnoDB CHARSET=utf8 COLLATE utf8_general_ci;
ERROR 1005 (HY000): Can't create table test.tasks (errno: 150 "Foreign key constraint is incorrectly formed")
Ответы (1 шт):
Автор решения: nikolaj.botalov
→ Ссылка
Спасибо, Akina!
Выкладываю правильный ответ.
CREATE TABLE users (
id INT NOT NULL AUTO_INCREMENT, PRIMARY KEY (int),
username VARCHAR(16) NOT NULL,
password VARCHAR(16) NOT NULL
) ENGINE=InnoDB CHARSET=utf8 COLLATE utf8_general_ci;
CREATE UNIQUE INDEX idx_username ON users (username)
CREATE TABLE tasks (
login VARCHAR(16) NOT NULL,
countOfTask INT NOT NULL,
taskName VARCHAR(64) NOT NULL,
CONSTRAINT `tasks_desc`
FOREIGN KEY (login) REFERENCES users (username)
) ENGINE=InnoDB CHARSET=utf8 COLLATE utf8_general_ci;
Как я понимаю, обязательно должна быть индексация.