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;

Как я понимаю, обязательно должна быть индексация.

→ Ссылка