Как добавить три внешних ключа для одной дочерней таблицы с тремя основными таблицами? - PullRequest
0 голосов
/ 07 октября 2011

Здесь у меня есть четыре таблицы в моей базе данных с именем test_center.Это:

  1. test_user -> PK = u_id
  2. test_metadata -> PK = test_id
  3. student_detail --> PK = Student_id
  4. test_records -> PK = test_record_id (дочерний стол)

Таблица 4 - это дочерний стол, а 1, 2, 3 - мастера.
Я пытаюсь, чтобы в таблице test_records было три внешних ключа из каждой из этих основных таблиц, но некоторые ошибки отображаются следующим образом.(Я использую MySQL Workbench 5.0 и сервер MySQL)

ОШИБКА 1005: Невозможно создать таблицу 'test_center. # Sql-aa4_12' (номер ошибки: 121)

Оператор SQL:

ALTER TABLE `test_center`.`test_records` 
  ADD CONSTRAINT `Student_id`
  FOREIGN KEY (`Student_id` )
  REFERENCES `test_center`.`student_detail` (`Student_id` )
  ON DELETE CASCADE
  ON UPDATE CASCADE, 
  ADD CONSTRAINT `test_id`
  FOREIGN KEY (`test_id` )
  REFERENCES `test_center`.`test_metadata` (`test_id` )
  ON DELETE CASCADE
  ON UPDATE CASCADE, 
  ADD CONSTRAINT `u_id`
  FOREIGN KEY (`u_id` )
  REFERENCES `test_center`.`test_user` (`u_id` )
  ON DELETE CASCADE
  ON UPDATE CASCADE

ОШИБКА: ошибка при запуске сценария восстановления после сбоя.Подробности следуют.ОШИБКА 1046: База данных не выбрана

Оператор SQL:

CREATE TABLE `test_records` (
  `test_record_id` int(11) NOT NULL AUTO_INCREMENT,
  `test_name` varchar(45) NOT NULL,
  `Result` float NOT NULL,
  `status` varchar(45) NOT NULL,
  `Student_id` varchar(45) NOT NULL,
  `u_id` int(11) NOT NULL,
  `test_id` int(11) NOT NULL,`enter code here`
  PRIMARY KEY (`test_record_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1

1 Ответ

1 голос
/ 07 октября 2011

Ваш запрос не может идентифицировать базу данных. Вы должны указать MySQL, какую базу данных использовать:

USE database_name;

перед созданием таблицы. Если база данных не существует, необходимо создать ее как:

CREATE DATABASE database_name;

с последующим

 USE database_name;
...