Я попытался исправить запрос. но произошла ошибка. сообщение об ошибке: 'Cannot add foreign key constraint'
. Я должен был создать эту таблицу. но это не сработало.
CREATE TABLE IF NOT EXISTS 'mydb'.'member' (
'idseq' INT(1) NOT NULL AUTO_INCREMENT,
'id' VARCHAR(50) NOT NULL,
'pw' VARCHAR(20) NOT NULL,
'name' VARCHAR(50) NOT NULL,
'email' VARCHAR(45) NOT NULL,
'mobile0' VARCHAR(3) NOT NULL,
'mobile1' VARCHAR(3) NOT NULL,
'mobile2' VARCHAR(4) NOT NULL,
'mobile3' VARCHAR(4) NOT NULL,
'birth' DATE NOT NULL,
'admin_YN' VARCHAR(45) NOT NULL DEFAULT 'N',
'reg_date' DATE NOT NULL,
'upd_date' DATE NOT NULL,
PRIMARY KEY ('idseq', 'id'))
ENGINE = InnoDB
AUTO_INCREMENT = 6
DEFAULT CHARACTER SET = utf8;
CREATE TABLE IF NOT EXISTS 'mydb'.'reservation' (
'reservation_seq' INT(11) NOT NULL AUTO_INCREMENT,
'user_id' VARCHAR(50) NOT NULL,
'playMv_seq' INT(11) NOT NULL,
'reservaion_seat_code' VARCHAR(20) NOT NULL,
'reservaion_seat_num' INT(11) NOT NULL,
'reservation_charge' VARCHAR(20) NOT NULL,
'reservation_date' DATETIME NOT NULL,
PRIMARY KEY ('reservation_seq', 'user_id', 'playMv_seq'),
FOREIGN KEY ('user_id')
REFERENCES 'mydb'.'member' ('id')
)
ENGINE = InnoDB
AUTO_INCREMENT = 8
DEFAULT CHARACTER SET = utf8;
Поэтому я проверил его подробно из запроса 'show engine innodb status
. сообщение об ошибке детали
Ошибка ограничения внешнего ключа таблицы mydb/бронирование:
FOREIGN KEY ('user_id')
REFERENCES 'mydb'.'member' ('id')
Не удается найти индекс в ссылочной таблице, где ссылочные столбцы отображаются в виде первых столбцов, или типы столбцов в таблице, а ссылочная таблица не соответствует ограничениям. Обратите внимание, что внутренний тип хранения ENUM и SET изменен в таблицах, созданных с помощью> = InnoDB-4.1.12, и такие столбцы в старых таблицах не могут ссылаться на такие столбцы в новых таблицах.
как я могу разрешить ошибку
Вы пытаетесь создать внешний ключ, ссылающийся на столбец id
целевой таблицы:
FOREIGN KEY ('user_id')
REFERENCES 'mydb'.'member' ('id')
Но каков фактический ключ на этой целевой таблице?:
PRIMARY KEY ('idseq', 'id')
Это не id
, если составной idseq
и id
. Чтобы ссылаться на это как внешний ключ, вам нужны локальные столбцы, которые соответствуют этому:
'user_idseq' INT(1) NOT NULL,
'user_id' VARCHAR(50) NOT NULL,
И используйте оба для внешнего ключа:
FOREIGN KEY ('user_idseq', 'user_id')
REFERENCES 'mydb'.'member' ('idseq', 'id')
(Side Note: первичный ключ в member
выглядит мне довольно странным в первую очередь. Почему сам idseq
не idseq
быть основным ключом? Какова цель id
?)