Меню

Mysql workbench ошибка 1822

I found some threads about the error. But all the solutions doesn’t work for me.

I created 2 tables a user table and one for articles. Now I want to store the user that created the article and the one who is the last modifier.

CREATE TABLE IF NOT EXISTS `testDb`.`users` (
  `id` INT NOT NULL AUTO_INCREMENT,
  `nickname` VARCHAR(255) NULL,
  `first_name` VARCHAR(255) NULL,
  `last_name` VARCHAR(255) NULL,
  `e_mail` VARCHAR(255) NOT NULL,
  `activated` TINYINT(1) NOT NULL DEFAULT 0,
  `birth_date` DATE NULL,
  `locked` TINYINT(1) NOT NULL DEFAULT 0,
  `locked_date_time` DATETIME NULL,
  `street` VARCHAR(255) NULL,
  `street_number` VARCHAR(255) NULL,
  `city` VARCHAR(255) NULL,
  `postal_code` VARCHAR(255) NULL,
  `country` VARCHAR(255) NULL,
  `phone` VARCHAR(255) NULL,
  PRIMARY KEY (`id`),
  UNIQUE INDEX `user_id_UNIQUE` (`id` ASC)
)
ENGINE = InnoDB
AUTO_INCREMENT = 1;


CREATE TABLE IF NOT EXISTS `testDb`.`articles` (
  `id` INT NOT NULL AUTO_INCREMENT,
  `name` VARCHAR(255) NULL,
  `description` VARCHAR(255) NULL,
  `create_user` INT ZEROFILL NOT NULL,
  `create_date_time` DATETIME NULL,
  `last_modifie_user` INT ZEROFILL NOT NULL,
  `last_modifie_date_time` DATETIME NULL,
  PRIMARY KEY (`id`),
  UNIQUE INDEX `article_id_UNIQUE` (`id` ASC),
  INDEX `fk_articles_users1_idx` (`create_user` ASC),
  INDEX `fk_articles_users2_idx` (`last_modifie_user` ASC)
)
ENGINE = InnoDB
AUTO_INCREMENT = 1;


ALTER TABLE `testDb`.`articles`
  ADD CONSTRAINT `fk_articles_users1`
    FOREIGN KEY (`create_user`)
    REFERENCES `testDb`.`users` (`id`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION,
  ADD CONSTRAINT `fk_articles_users2`
    FOREIGN KEY (`last_modifie_user`)
    REFERENCES `testDb`.`users` (`id`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION;

I get the following error, but I didn’t understand why I should have a index for that.

Error Code: 1822. Failed to add the foreign key constaint. Missing index for constraint ‘fk_articles_users1’ in the referenced table ‘users’

I actived

SHOW ENGINE innodb STATUS;

but this doesn’t shows any erros.

create table TruckMake(
TruckMakeID char(3) NOT NULL,
TruckMakeName varchar(20) NOT NULL,
primary key (TruckMakeID));

create table TruckModel(
TruckMakeID char(3) NOT NULL,
TruckModelID char(3) NOT NULL,
TruckModelName varchar(5) NOT NULL,
primary key (TruckMakeID, TruckModelID),
foreign key (TruckMakeID) references TruckMake(TruckMakeID));

create table Truck(
TruckVINNum char(4) NOT NULL,
TruckMakeID char(3) NOT NULL,
TruckModelID char(3) NOT NULL,
TruckColour varchar(15) NOT NULL,
TruckPurchaseDate date NOT NULL,
TruckCost decimal(8,2) NOT NULL,
primary key (TruckVINNum),
constraint truck_ibfk_2 foreign key (TruckMakeID) references TruckModel(TruckMakeID),
constraint truck_ibfk_1 foreign key (TruckModelID) references TruckModel(TruckModelID));

The error i’m getting is:

01:19:32 create table Truck( TruckVINNum char(4) NOT NULL, TruckMakeID char(3) NOT NULL, TruckModelID char(3) NOT NULL, TruckColour varchar(15) NOT NULL, TruckPurchaseDate date NOT NULL, TruckCost decimal(8,2) NOT NULL, primary key (TruckVINNum), constraint truck_ibfk_2 foreign key (TruckMakeID) references TruckModel(TruckMakeID),

constraint truck_ibfk_1 foreign key (TruckModelID) references TruckModel(TruckModelID)) 
Error Code: 1822. Failed to add the foreign key constraint.  
   Missing index for constraint 'truck_ibfk_1' in the referenced table 'truckmodel' 0.000 sec

How do i fix this?

Я пытаюсь создать таблицу с составным внешним ключом, но постоянно получаю ошибку Error Code: 1822. Failed to add the foreign key constraint. Missing index for constraint ‘fk_contractdateshistoric_contractdates_multiple’ in the referenced table ‘contractdates’

Я использую MySQL v8.0.16

Я проверил, различаются ли типы столбцов, и я не уверен, в чем еще может быть проблема.

Вот таблицы, которые составляют проблему. Все таблицы созданы успешно, но последняя, ​​содержащая составной ключ, вызывает проблему.

CREATE TABLE `contracts` (
  `ID` int(11) NOT NULL AUTO_INCREMENT,
  `Name` varchar(100) DEFAULT NULL,
  `CreationDate` datetime DEFAULT NULL,
  `CreatedBy` varchar(30) DEFAULT NULL,
  `CompletionDate` date DEFAULT NULL,
  `Comments` varchar(100) DEFAULT NULL,
  PRIMARY KEY (`ID`)
);

CREATE TABLE `fieldheading` (
  `ID` int(11) NOT NULL AUTO_INCREMENT,
  `fieldTypeID` int(11) DEFAULT NULL,
  `fieldCode` int(11) DEFAULT NULL,
  `fieldHeading` varchar(100) DEFAULT NULL,
  PRIMARY KEY (`ID`)
);

CREATE TABLE `contractdates` (
 `ID` int(11) NOT NULL AUTO_INCREMENT,
  `DateValue` datetime DEFAULT NULL,
  `ContractID` int(11) NOT NULL,
  `FieldHeadingID` int(11) NOT NULL,
  PRIMARY KEY (`ID`),
  UNIQUE KEY `uq_contractdates_contractID_FieldHeading_ID` (`ContractID`,`FieldHeadingID`),
  KEY `fk_contractdates_contracts_id_idx` (`ContractID`),
  KEY `fk_contractdates_fieldheading_id_idx` (`FieldHeadingID`),
  CONSTRAINT `fk_contractdates_fieldheading_id` FOREIGN KEY (`FieldHeadingID`) REFERENCES `fieldheading` (`id`),
  CONSTRAINT `fk_contractdates_contracts_id` FOREIGN KEY (`ContractID`) REFERENCES `contracts` (`id`)
) COMMENT='Table to hold the dates for a contract, one row is one date for a specific contract';

CREATE TABLE `contractdateshistoric` (
  `ID` int(11) NOT NULL AUTO_INCREMENT,
  `ContractID` int(11) NOT NULL,
  `ContractDateCurrentID` int(11) NOT NULL,
  `FieldHeadingID` int(11) NOT NULL,
  `ChangedByID` int(11) NOT NULL,
  `DateValue` datetime NOT NULL,
  `TimeStampChanged` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`ID`),
  KEY `fk_contractdateshistoric_contractdates_mutiple_idx` (`ContractID`, `FieldHeadingID`, `ContractDateCurrentID`),
  CONSTRAINT `fk_contractdateshistoric_contractdates_multiple` FOREIGN KEY (`ContractID`, `FieldHeadingID`, `ContractDateCurrentID`) REFERENCES `contractdates` (`contractid`, `fieldheadingid`, `id`)
) COMMENT='Audit trail of the dates';

Перейти к ответу
Данный вопрос помечен как решенный


Ответы
3

Он пытается сказать вам «Вы не создали необходимый уникальный индекс для контрактных дат, который охватывает столбцы (contractid, fieldheadingid, id), поэтому я не могу создать внешний ключ для контрактных дат, который ссылается на этот набор столбцов при определении единственной родительской строки»

Я не уверен, почему вы создаете fk, который ссылается на 3 столбца, когда у contractdates есть pk, который является просто столбцом идентификатора.

Если в исторических записях contractdates указана одна запись contractdates в качестве родителя, в исторической записи должен быть столбец contractdateid, который ссылается на contractdates.id — нет необходимости в нескольких столбцах. Скопируйте шаблон, который вы использовали для связи даты контракта с его родительским контрактом, и все будет в порядке.

Я попытался создать ключи отдельно для столбцов. Найдите обновленный запрос:

CREATE TABLE `contractdateshistoric` (
    `ID` INT(11) NOT NULL AUTO_INCREMENT,
    `ContractID` INT(11) NOT NULL,
    `ContractDateCurrentID` INT(11) NOT NULL,
    `FieldHeadingID` INT(11) NOT NULL,
    `ChangedByID` INT(11) NOT NULL,
    `DateValue` DATETIME NOT NULL,
    `TimeStampChanged` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
    PRIMARY KEY (`ID`),
    KEY `fk_contractdateshistoric_contractdates_mutiple_idx` (`ContractID`),
    KEY `fk_contractdateshistoric_contractdates_mutiple_idx1` (`FieldHeadingID`),
    KEY `fk_contractdateshistoric_contractdates_mutiple_idx2` (`ContractDateCurrentID`),
    CONSTRAINT `fk_contractdateshistoric_contractdates_multiple` FOREIGN KEY (`ContractID`)
    REFERENCES `contractdates` (`contractid`),
    CONSTRAINT `fk_contractdateshistoric_contractdates_multiple1` FOREIGN KEY (`FieldHeadingID`)
    REFERENCES `contractdates` (`fieldheadingid`),
    CONSTRAINT `fk_contractdateshistoric_contractdates_multiple2` FOREIGN KEY (`ContractDateCurrentID`)
    REFERENCES `contractdates` (`id`)
);

Это работает нормально.

Поскольку вы используете Composite FK в таблице, попробуйте также добавить составной индекс.

  KEY `fk_contractdates_mutiple_idx` (`ContractID`,`FieldHeadingID`,`ID`)

Весь оператор создания

CREATE TABLE `contractdates` (
 `ID` int(11) NOT NULL AUTO_INCREMENT,
  `DateValue` datetime DEFAULT NULL,
  `ContractID` int(11) NOT NULL,
  `FieldHeadingID` int(11) NOT NULL,
  PRIMARY KEY (`ID`),
  KEY `fk_contractdates_contracts_id_idx` (`ContractID`),
  KEY `fk_contractdates_fieldheading_id_idx` (`FieldHeadingID`),
  KEY `fk_contractdates_mutiple_idx` (`ContractID`,`FieldHeadingID`,`ID`),
  CONSTRAINT `fk_contractdates_fieldheading_id` FOREIGN KEY (`FieldHeadingID`) REFERENCES `fieldheading` (`id`),
  CONSTRAINT `fk_contractdates_contracts_id` FOREIGN KEY (`ContractID`) REFERENCES `contracts` (`id`)
) COMMENT='Table to hold the dates for a contract, one row is one date for a specific contract';

Другие вопросы по теме

DROP DATABASE IF EXISTS newUser;
CREATE DATABASE newUser;
USE newUser;

DROP TABLE IF EXISTS address;
DROP TABLE IF EXISTS detail;

CREATE TABLE address (
    ads_id INT PRIMARY KEY,
    cls_entries INT,
    ads VARCHAR(40) UNIQUE NOT NULL
);
CREATE TABLE detail (
    mng_id INT,
    cls_type VARCHAR(5),
    cls_entries INT,
    FOREIGN KEY (mng_id) REFERENCES address(ads_id) ON DELETE SET NULL,
    FOREIGN KEY(cls_entries) REFERENCES address(cls_entries) ON DELETE SET NULL
);
// Error 1822

I’m trying to set FOREIGN KEY on detail table but the workbench keeps throwing error for unknown reason.

...
CREATE TABLE detail (
    mng_id INT,
    cls_type VARCHAR(5),
    cls_entries INT,
    FOREIGN KEY (mng_id) REFERENCES address(ads_id) ON DELETE SET NULL
);
ALTER TABLE address ADD FOREIGN KEY(cls_entries) REFERENCES detail(cls_entries) ON DELETE SET NULL;
// Error 1822 again. FFS

This time I pulled out the cls_entries line and used ALTER keyword, but still throws the same error.

All my tries are based on this tutorial, yet still I have 0 progresses.

God this fucker pisses me off so hard.

What did I wrong in the walkthrough?

This is my code and it gives me this error -> Error Code 1822. Failed to add the foreing key constraint. Missing index for constraint ‘paciente_ifbk_1’ in the references table ‘medico’. Can anybody help me? 🙁

CREATE DATABASE IF NOT EXISTS hospital;
USE hospital;

CREATE TABLE IF NOT EXISTS Planta (
CodigoPlanta INT NOT NULL,
Especialidad VARCHAR(255) NOT NULL,
Camas VARCHAR(255) NOT NULL,
Habitaciones VARCHAR(255) NOT NULL,
constraint PK_CodigoPlanta PRIMARY KEY(CodigoPlanta)
);

INSERT INTO Planta VALUES ('1','Cardiología','5','2');
INSERT INTO Planta VALUES ('2','Maternidad','5','2');
INSERT INTO Planta VALUES ('3','Neurología','4','2');

CREATE TABLE IF NOT EXISTS Habitacion (
NumeroHabitacion VARCHAR(255) NOT NULL,
NumeroCamas VARCHAR(255) NOT NULL
);


INSERT INTO Habitacion VALUES ('1.1','3');
INSERT INTO Habitacion VALUES ('1.2','2');
INSERT INTO Habitacion VALUES ('2.1','2');
INSERT INTO Habitacion VALUES ('2.2','3');
INSERT INTO Habitacion VALUES ('3.1','2');
INSERT INTO Habitacion VALUES ('3.2','2');

CREATE TABLE IF NOT EXISTS Medico (
 NumeroColegiado VARCHAR(255) NOT NULL,
 Nombre VARCHAR(255) NOT NULL,
 Pacientes VARCHAR(255) NOT NULL,
 constraint PK_NumeroColegiado PRIMARY KEY(NumeroColegiado)
);

INSERT INTO Medico VALUES ('346','Alberto Escalona','2');
INSERT INTO Medico VALUES ('567','Sergio Cuevas','3');
INSERT INTO Medico VALUES ('846','Andrea Books','1');

CREATE TABLE IF NOT EXISTS Enfermero (
CodigoEnfermero VARCHAR(255) NOT NULL,
Nombre VARCHAR(255) NOT NULL,
Pacientes VARCHAR(255) NOT NULL,
constraint PK_CodigoEnfermero PRIMARY KEY(CodigoEnfermero)
);


INSERT INTO Enfermero VALUES ('426','Iván Pastor','1');
INSERT INTO Enfermero VALUES ('671','Sara Pérez','4');
INSERT INTO Enfermero VALUES ('749','Anabel Cuevas','2');

CREATE TABLE IF NOT EXISTS Paciente (
NumSeguridadSocial VARCHAR(255) NOT NULL,
Nombre VARCHAR(255) NOT NULL,
Direccion VARCHAR(255) NOT NULL,
DNI VARCHAR(255) NOT NULL,
MedicoAsignado VARCHAR(255) NOT NULL,
FOREIGN KEY (MedicoAsignado) REFERENCES Medico(Nombre),
Diagnostico VARCHAR(255) NOT NULL,
Tratamiento VARCHAR(255) NOT NULL,
NumeroHabitacion VARCHAR(255) NOT NULL,
FOREIGN KEY (NumeroHabitacion) REFERENCES Habitacion(NumeroHabitacion),
EnfermerosResponsables VARCHAR(255) NOT NULL,
FOREIGN KEY (EnfermerosResponsables) REFERENCES Enfermero(Nombre),
constraint PK_NumSeguridadSocial PRIMARY KEY(NumSeguridadSocial),
constraint PK_DNI UNIQUE(DNI)
);

INSERT INTO Paciente VALUES ('4242417','Carlos Mendoza','c/ 
Coslada','84739175J','Alberto Escalona, Sergio 
Cuevas','Esquizofrenia','Darse un agua','1.2','Sara Pérez, Iván Pastor');
INSERT INTO Paciente VALUES ('4953839','Javier Martín','c/ 
Arcoiris','28485964L', 'Sergio Cuevas','Dolor intenso en un dedo del 
pie','Amputación del dedo','2.2','Sara Pérez');
INSERT INTO Paciente VALUES ('9213813','Mónica Guillén','c/ 
Estambul','294758601S', 'Alberto Escalona, Andrea Books','Dolor de 
cabeza','Ibuprofeno','1.1','Sara Pérez, Anabel Cuevas');
INSERT INTO Paciente VALUES ('6438421','Jorge Chamborro','c/ 
Montecristo','827384918V', 'Sergio Cuevas','Dificultad 
respiratoria','Tomar ventolín','1.2','Sara Pérez, Anabel Cuevas');

/*Camas ocupadas*/
SELECT Habitacion.NumeroHabitacion, count(NumeroCamas) FROM Habitacion 
JOIN Paciente ON Habitacion.NumeroHabitacion = Paciente.NumeroHabitacion 
GROUP BY Habitacion.NumeroHabitacion;

The error is Error Code 1822. Failed to add the foreing key constraint. Missing index for constraint ‘paciente_ifbk_1’ in the references table ‘medico’

This is my code and it gives me this error -> Error Code 1822. Failed to add the foreing key constraint. Missing index for constraint ‘paciente_ifbk_1’ in the references table ‘medico’. Can anybody help me? 🙁

CREATE DATABASE IF NOT EXISTS hospital;
USE hospital;

CREATE TABLE IF NOT EXISTS Planta (
CodigoPlanta INT NOT NULL,
Especialidad VARCHAR(255) NOT NULL,
Camas VARCHAR(255) NOT NULL,
Habitaciones VARCHAR(255) NOT NULL,
constraint PK_CodigoPlanta PRIMARY KEY(CodigoPlanta)
);

INSERT INTO Planta VALUES ('1','Cardiología','5','2');
INSERT INTO Planta VALUES ('2','Maternidad','5','2');
INSERT INTO Planta VALUES ('3','Neurología','4','2');

CREATE TABLE IF NOT EXISTS Habitacion (
NumeroHabitacion VARCHAR(255) NOT NULL,
NumeroCamas VARCHAR(255) NOT NULL
);


INSERT INTO Habitacion VALUES ('1.1','3');
INSERT INTO Habitacion VALUES ('1.2','2');
INSERT INTO Habitacion VALUES ('2.1','2');
INSERT INTO Habitacion VALUES ('2.2','3');
INSERT INTO Habitacion VALUES ('3.1','2');
INSERT INTO Habitacion VALUES ('3.2','2');

CREATE TABLE IF NOT EXISTS Medico (
 NumeroColegiado VARCHAR(255) NOT NULL,
 Nombre VARCHAR(255) NOT NULL,
 Pacientes VARCHAR(255) NOT NULL,
 constraint PK_NumeroColegiado PRIMARY KEY(NumeroColegiado)
);

INSERT INTO Medico VALUES ('346','Alberto Escalona','2');
INSERT INTO Medico VALUES ('567','Sergio Cuevas','3');
INSERT INTO Medico VALUES ('846','Andrea Books','1');

CREATE TABLE IF NOT EXISTS Enfermero (
CodigoEnfermero VARCHAR(255) NOT NULL,
Nombre VARCHAR(255) NOT NULL,
Pacientes VARCHAR(255) NOT NULL,
constraint PK_CodigoEnfermero PRIMARY KEY(CodigoEnfermero)
);


INSERT INTO Enfermero VALUES ('426','Iván Pastor','1');
INSERT INTO Enfermero VALUES ('671','Sara Pérez','4');
INSERT INTO Enfermero VALUES ('749','Anabel Cuevas','2');

CREATE TABLE IF NOT EXISTS Paciente (
NumSeguridadSocial VARCHAR(255) NOT NULL,
Nombre VARCHAR(255) NOT NULL,
Direccion VARCHAR(255) NOT NULL,
DNI VARCHAR(255) NOT NULL,
MedicoAsignado VARCHAR(255) NOT NULL,
FOREIGN KEY (MedicoAsignado) REFERENCES Medico(Nombre),
Diagnostico VARCHAR(255) NOT NULL,
Tratamiento VARCHAR(255) NOT NULL,
NumeroHabitacion VARCHAR(255) NOT NULL,
FOREIGN KEY (NumeroHabitacion) REFERENCES Habitacion(NumeroHabitacion),
EnfermerosResponsables VARCHAR(255) NOT NULL,
FOREIGN KEY (EnfermerosResponsables) REFERENCES Enfermero(Nombre),
constraint PK_NumSeguridadSocial PRIMARY KEY(NumSeguridadSocial),
constraint PK_DNI UNIQUE(DNI)
);

INSERT INTO Paciente VALUES ('4242417','Carlos Mendoza','c/ 
Coslada','84739175J','Alberto Escalona, Sergio 
Cuevas','Esquizofrenia','Darse un agua','1.2','Sara Pérez, Iván Pastor');
INSERT INTO Paciente VALUES ('4953839','Javier Martín','c/ 
Arcoiris','28485964L', 'Sergio Cuevas','Dolor intenso en un dedo del 
pie','Amputación del dedo','2.2','Sara Pérez');
INSERT INTO Paciente VALUES ('9213813','Mónica Guillén','c/ 
Estambul','294758601S', 'Alberto Escalona, Andrea Books','Dolor de 
cabeza','Ibuprofeno','1.1','Sara Pérez, Anabel Cuevas');
INSERT INTO Paciente VALUES ('6438421','Jorge Chamborro','c/ 
Montecristo','827384918V', 'Sergio Cuevas','Dificultad 
respiratoria','Tomar ventolín','1.2','Sara Pérez, Anabel Cuevas');

/*Camas ocupadas*/
SELECT Habitacion.NumeroHabitacion, count(NumeroCamas) FROM Habitacion 
JOIN Paciente ON Habitacion.NumeroHabitacion = Paciente.NumeroHabitacion 
GROUP BY Habitacion.NumeroHabitacion;

The error is Error Code 1822. Failed to add the foreing key constraint. Missing index for constraint ‘paciente_ifbk_1’ in the references table ‘medico’

#mysql

#mysql #внешние ключи #mysql-workbench

Вопрос:

Получение

Код ошибки: 1822. Не удалось добавить ограничение внешнего ключа. Отсутствует индекс для ограничения ‘subject_ibfk_1’ в таблице ссылок ‘зачисление’

при попытке создать subject таблицу. Проблема в том, что ошибка не возникает в предыдущей таблице student . Типы данных те же, и первичные ключи определены.

Эта ошибка возникает как для enrolment таблиц, так и grade для таблиц.

 create table enrolment(
    stud_id char(9) not null,
    subj_code char(8) not null,
    semester tinyint unsigned not null,
    year smallint unsigned not null,
    comment text,

    primary key (stud_id, subj_code, semester, year)
);

create table grade(
    stud_id char(9) not null,
    subj_code char(8) not null,
    semester tinyint unsigned not null,
    year smallint unsigned not null,
    grade tinyint unsigned,

    primary key (stud_id, subj_code, semester, year)
);

create table student(
    stud_id char(9) not null,
    stud_name char(30),
    stud_phone char(12),
    stud_date_of_birth date,
    stud_city char(26),
    stud_address char(30),
    stud_postcode char(4),

    primary key (stud_id),

    foreign key (stud_id)
        references grade(stud_id),
    foreign key (stud_id)
        references enrolment(stud_id)
);

create table subject(
    subj_code char(8) not null,
    subj_title char(40),

    primary key (subj_code),

    foreign key (subj_code)
        references enrolment(subj_code),

    foreign key (subj_code)
        references grade(subj_code)
);
 

Ответ №1:

Проблема связана с тем, что внешний ключ, subj_code , является частью многоколоночного первичного ключа (PK) в таблице, на которую ссылается enrolment :

 primary key (stud_id, subj_code, semester, year)
 

где этот столбец ( subj_code ) не является крайним левым.

Таблица student не имеет этой проблемы, потому что ее столбец внешнего ключа stud_id является крайним левым столбцом PK в таблице, на которую ссылается ссылка.

Чтобы решить эту проблему, вы можете создать новый индекс для ссылочного столбца:

 ALTER TABLE enrolment ADD INDEX subj_code_idx (subj_code);
 

Примечание: вы должны сделать то же самое для таблицы grade , на которую ссылается другой внешний ключ.

Демонстрация здесь

Комментарии:

1. Это работает, но почему создание нового индекса для столбца решает проблему?

2. Спасибо, это правильный ответ

Ответ №2:

ВНЕШНИЙ КЛЮЧ одной таблицы является ПЕРВИЧНЫМ ключом другой таблицы. это ключ сопоставления или столбец между двумя таблицами.

Прежде всего: вы не указываете subject_id в качестве первичного ключа в таблице CLO. subject_id действует как первичный ключ в таблице subject и внешний ключ в таблице clo

 ALTER TABLE `clo` DROP PRIMARY KEY, ADD PRIMARY KEY(`clo_id`);

ALTER TABLE `subject` DROP PRIMARY KEY, ADD PRIMARY KEY(`subject_id`);

ALTER TABLE clo ADD FOREIGN KEY (subject_id) REFERENCES subject(subject_id)
 

введите описание изображения здесь

введите описание изображения здесь

0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

А вот еще интересные материалы:

  • Яшка сломя голову остановился исправьте ошибки
  • Ясность цели позволяет целеустремленно добиваться намеченного исправьте ошибки
  • Ясность цели позволяет целеустремленно добиваться намеченного где ошибка
  • Mysql server ошибка установки
  • Mysql server ошибка при установке