2015-08-19 2 views
-1

Пока я создаю схему «Не могу добавить ограничение внешнего ключа», я получаю.Невозможно создать ссылку на внешний ключ с разными столбцами столбцов

Запрос является:

CREATE database sample; 
USE sample; 

CREATE TABLE sys_admin_user_t (
    sys_admin_id MEDIUMINT NOT NULL, 
    admin_name VARCHAR(255) NOT NULL, 
    admin_password VARCHAR(255) NOT NULL, 
    PRIMARY KEY (sys_admin_id) 
); 

CREATE TABLE sys_user_roles_t (
    role_id MEDIUMINT NOT NULL, 
    privilege_id MEDIUMINT NOT NULL, 
    role_name VARCHAR(255) NOT NULL, 
    role_description VARCHAR(255) NOT NULL, 
    created_by MEDIUMINT NOT NULL, 
    created_date DATE NOT NULL, 
    modified_by MEDIUMINT NOT NULL, 
    FOREIGN KEY (privilege_id) REFERENCES privileges_t (privilege_id), 
    FOREIGN KEY (created_by) REFERENCES sys_admin_user_t(sys_admin_id), 
    FOREIGN KEY (modified_by) REFERENCES sys_admin_user_t(sys_admin_id), 
    PRIMARY KEY (role_id) 
); 

Пожалуйста, кто-нибудь помочь мне решить эту проблему.

+1

ли privileges_t' существует таблица '? – InbetweenWeekends

+0

Какая ошибка? –

+0

Какой ключ вызывает ошибку? возможно, эти 2 не одинаковы? 'FOREIGN KEY (privilege_id) REFERENCES privileges_t (privilege_id), FOREIGN KEY (created_by) ССЫЛКИ sys_admin_user_t (sys_admin_id),' – Nanne

ответ

1

Это может произойти в следующих случаях:

  • Вы не создаете таблицу privileges_t
  • В вашей таблице privileges_t не существует первичный ключ с помощью поля privilege_id
  • Поле privilege_id из таблицы sys_user_roles_t ARE не точно такой же тип данных, как в таблице privileges_t
  • Вы не используете InnoDB в качестве двигателя во всех таблицах

И найти конкретные ошибки запуска этого:

SHOW ENGINE INNODB STATUS\G 
Смежные вопросы