Я создаю две таблицы в mariadb. Отношение Store_on связывает полку и книгу вместе. Все работает отлично, за исключением того, что я добавил lib_floor в сохраненное отношение, и эта ошибка внезапно появляется. Когда я удаляю lib_floor, определение внешнего ключа для lib_floor и lib_floor из сохраненного на первичном ключе, проблем не возникает. Любые идеи? Тип данных одинаковый (INT).
CREATE TABLE shelf (
shelf_number INT NOT NULL,
lib_name VARCHAR(50) NOT NULL,
lib_floor INT NOT NULL,
FOREIGN KEY (lib_name) REFERENCES library (lib_name) ON DELETE CASCADE,
PRIMARY KEY (shelf_number,lib_name,lib_floor)
);
CREATE TABLE stored_on (
shelf_number INT NOT NULL,
lib_name VARCHAR(50) NOT NULL,
lib_floor INT NOT NULL,
isbn VARCHAR(20) NOT NULL,
total_copies INT NOT NULL,
FOREIGN KEY (shelf_number) REFERENCES shelf (shelf_number) ON DELETE CASCADE,
FOREIGN KEY (lib_name) REFERENCES shelf (lib_name) ON DELETE CASCADE,
FOREIGN KEY (lib_floor) REFERENCES shelf (lib_floor) ON DELETE CASCADE,
FOREIGN KEY (isbn) REFERENCES book (isbn) ON DELETE CASCADE,
PRIMARY KEY (shelf_number,lib_name,lib_floor,isbn)
);
Предупреждение 1:
| Предупреждение 150 | Создать таблицу .... stored_on
с ограничением внешнего ключа не удалось. В ссылочной таблице нет индекса, в котором указанные столбцы отображаются как первые столбцы рядом с 'FOREIGN KEY (lib_floor) REFERENCES shelf (lib_floor) ON DELETE CASCADE, FOREIGN KEY (isbn) REFERENCES book (isbn) ON DELETE CASCADE, PRIMARY KEY ( номер полки, имя_библиотеки, lib_floor, isbn)) '. |
Ошибка 1:
| Ошибка | 1005 | Невозможно создать таблицу ... stored_on
(ошибка: 150 "Ограничение внешнего ключа сформировано неправильно")
Предупреждение 2:
Предупреждение | 1215 | Невозможно добавить ограничение внешнего ключа для stored_on