Код ошибки MySQL (невозможно добавить или обновить дочернюю строку ..)

0

Вот одна из моих таблиц:

CREATE TABLE IF NOT EXISTS 'mydb'.'Branch' (
'branchID' CHAR(5) NOT NULL,
'branchAddress' VARCHAR(40) NULL,
'branchPhoneNo' VARCHAR(20) NULL,
'productCode' CHAR(5) NULL,
PRIMARY KEY ('branchID'))
ENGINE = InnoDB;

и вот вставки для этой таблицы:

START TRANSACTION;
USE 'mydb';
INSERT INTO 'mydb'.'Branch' ('branchID', 'branchAddress', 'branchPhoneNo', 
'productCode') VALUES ('BR198', 'Waterford', '051786796', 'P1234');
INSERT INTO 'mydb'.'Branch' ('branchID', 'branchAddress', 'branchPhoneNo', 
'productCode') VALUES ('BR221', 'Cork', '021475859', 'P5678');
INSERT INTO 'mydb'.'Branch' ('branchID', 'branchAddress', 'branchPhoneNo', 
'productCode') VALUES ('BR330', 'Waterford', '051846784', 'P1122');
INSERT INTO 'mydb'.'Branch' ('branchID', 'branchAddress', 'branchPhoneNo', 
'productCode') VALUES ('BR38', 'Dublin', '01784767', 'P3344');
INSERT INTO 'mydb'.'Branch' ('branchID', 'branchAddress', 'branchPhoneNo', 
'productCode') VALUES ('BR001', 'Longford', '041875589', 'P5566');

COMMIT;

И вот мой второй стол:

CREATE TABLE IF NOT EXISTS 'mydb'.'Employee' (
'empNo' CHAR(5) NOT NULL,
'name' VARCHAR(25) NULL,
'department' VARCHAR(10) NULL,
'Branch_branchID' CHAR(5) NOT NULL,
'Manager_managerID' CHAR(5) NOT NULL,
PRIMARY KEY ('empNo'),
INDEX 'fk_Employee_Branch1_idx' ('Branch_branchID' ASC),
INDEX 'fk_Employee_Manager1_idx' ('Manager_managerID' ASC),
CONSTRAINT 'fk_Employee_Branch1'
FOREIGN KEY ('Branch_branchID')
REFERENCES 'mydb'.'Branch' ('branchID')
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT 'fk_Employee_Manager1'
FOREIGN KEY ('Manager_managerID')
REFERENCES 'mydb'.'Manager' ('managerID')
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;

И вот вставки для этой таблицы:

START TRANSACTION;
USE 'mydb';
INSERT INTO 'mydb'.'Employee' ('empNo', 'name', 'department', 
'Branch_branchID', 'Manager_managerID') VALUES ('EM092', 'Dami Kerry', 
'Garden', 'BR198', 'M3321');
INSERT INTO 'mydb'.'Employee' ('empNo', 'name', 'department', 
'Branch_branchID', 'Manager_managerID') VALUES ('EM782', 'Donna Kinsella', 
'Living', 'BR221', 'M7789');
INSERT INTO 'mydb'.'Employee' ('empNo', 'name', 'department', 
'Branch_branchID', 'Manager_managerID') VALUES ('EM109', 'Georgina Hughes', 
'Bathroom', 'BR330', 'M9034');
INSERT INTO 'mydb'.'Employee' ('empNo', 'name', 'department', 
'Branch_branchID', 'Manager_managerID') VALUES ('EM728', 'Joe Bloggs', 
'Kitchen', 'BR938', 'M2945');
INSERT INTO 'mydb'.'Employee' ('empNo', 'name', 'department', 
'Branch_branchID', 'Manager_managerID') VALUES ('EM211', 'Michael Carroll', 
'Bedroom', 'BR001', 'M0921');

COMMIT;

Вот сообщение об ошибке, которое я продолжаю получать:

Код ошибки: 1452. Невозможно добавить или обновить дочернюю строку: ограничение внешнего ключа не удается (mydb. employee, скованность fk_Employee_Branch1 FOREIGN KEY (Branch_branchID) ЛИТЕРАТУРА branch (branchID) ON УДАЛИТЬ NO ACTION ON UPDATE NO ACTION)

Я очень много нового для MySql, как вы, вероятно, можете сказать. Пожалуйста, любая помощь/совет будет очень оценена!

Заранее спасибо!

  • 0
    Этот BranchID = BR938 не существует в таблице Branch . Я думаю, что вы опечатали BR38 на столе Branch .
  • 0
    @WEI_DBA Это сработало! Большое спасибо .. сейчас пытаюсь исправить еще несколько ошибок. Вы случайно не знаете, что означает ошибка «Out of range value»? Еще раз спасибо!
Теги:
database
mysql-workbench
foreign-keys

1 ответ

0
Лучший ответ

проверьте запросы.

Невозможно добавить или обновить дочернюю строку: ограничение внешнего ключа не выполняется

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

Я видел запросы на вставку и нашел, что Pk "BR38" в таблице "Branch" не равен Fk "BR938", который вы пытаетесь вставить в Employee:

INSERT INTO 'mydb'.'Branch' ('branchID', 'branchAddress', 'branchPhoneNo', 
'productCode') VALUES ('BR38', 'Dublin', '01784767', 'P3344');

INSERT INTO 'mydb'.'Employee' ('empNo', 'name', 'department', 
'Branch_branchID', 'Manager_managerID') VALUES ('EM728', 'Joe Bloggs', 
'Kitchen', 'BR938', 'M2945');

Исправьте FK в запросе и дайте мне знать, если он сработает.

  • 0
    Да, это действительно сработало. В настоящее время пытаетесь исправить все другие ошибки, знаете ли вы, что означает ошибка «Out of range value», пожалуйста? Еще раз спасибо!
  • 0
    проверьте длину строки или числа, которое вы пытаетесь вставить. если он больше длины столбца, он выдаст ошибку. Вы не можете вставить 11 символов в столбец длиной 10 символов.
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню