ERROR 1215 (HY000): Cannot add foreign key constraint. Не получается связать таблицы

Рейтинг: 0Ответов: 1Опубликовано: 01.05.2015

Есть две таблицы:

mysql> SHOW COLUMNS FROM Medias;
+-----------------+--------------+------+-----+---------+-------+
| Field           | Type         | Null | Key | Default | Extra |
+-----------------+--------------+------+-----+---------+-------+
| id_media        | varchar(100) | NO   | PRI | NULL    |       |
| type_media      | varchar(100) | NO   |     | NULL    |       |
| caption         | varchar(100) | NO   |     | NULL    |       |
| filter_media    | varchar(100) | NO   |     | NULL    |       |
| link            | varchar(100) | NO   |     | NULL    |       |
| created_time    | varchar(100) | NO   |     | NULL    |       |
| image_low       | varchar(100) | NO   |     | NULL    |       |
| image_thumbnail | varchar(100) | NO   |     | NULL    |       |
| image_standart  | varchar(100) | NO   |     | NULL    |       |
| id_user         | varchar(100) | YES  | MUL | NULL    |       |
| id_location     | varchar(100) | YES  | MUL | NULL    |       |
+-----------------+--------------+------+-----+---------+-------+
11 rows in set (0,00 sec)

mysql> SHOW COLUMNS FROM Users;
+-------------------+--------------+------+-----+---------+-------+
| Field             | Type         | Null | Key | Default | Extra |
+-------------------+--------------+------+-----+---------+-------+
| id_user           | varchar(100) | NO   | PRI | NULL    |       |
| access_token      | varchar(100) | YES  |     | NULL    |       |
| login             | varchar(100) | NO   |     | NULL    |       |
| full_name         | varchar(100) | YES  |     | NULL    |       |
| profile_picture   | varchar(500) | YES  |     | NULL    |       |
| bio               | varchar(100) | YES  |     | NULL    |       |
| website           | varchar(100) | YES  |     | NULL    |       |
| registration_date | datetime     | YES  |     | NULL    |       |
| last_visit        | datetime     | YES  |     | NULL    |       |
| last_check        | datetime     | YES  |     | NULL    |       |
| rating            | int(11)      | NO   |     | NULL    |       |
| count_media       | int(11)      | NO   |     | NULL    |       |
| count_follows     | int(11)      | NO   |     | NULL    |       |
| count_followed_by | int(11)      | NO   |     | NULL    |       |
+-------------------+--------------+------+-----+---------+-------+
14 rows in set (0,01 sec)

Пытаюсь создать связь many-to-many, но вспомогательная таблица не создается. Не понимаю в чем ошибка.
Команда

CREATE TABLE marks (
    id_media VARCHAR(100), 
    id_user VARCHAR(100), 
    FOREIGN KEY(id_media) REFERENCES `Medias` (id_media), 
    FOREIGN KEY(id_user) REFERENCES `Users` (id_user)
)

Выводит сообщение

ERROR 1215 (HY000): Cannot add foreign key constraint

Ответы

▲ 1

Может быть по умолчанию создается MyISAM таблица? А если так

CREATE TABLE marks (
id_media VARCHAR(100), 
id_user VARCHAR(100), 
FOREIGN KEY(id_media) REFERENCES `Medias` (id_media), 
FOREIGN KEY(id_user) REFERENCES `Users` (id_user)
) ENGINE=INNODB;