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

0

Я создал таблицы в MYSQL следующим образом

Таблица авторов

CREATE TABLE 'author' (
'AuthorId' varchar(25) NOT NULL,
'AuthorName' varchar(50) NOT NULL,
 PRIMARY KEY ('AuthorId')
 ) ENGINE=InnoDB DEFAULT CHARSET=latin1

Таблица книг

 CREATE TABLE 'books' (
 'DocId' int(11) NOT NULL,
 'ISBN' varchar(13) NOT NULL,
 PRIMARY KEY ('DocId'),
 KEY 'DocId' ('DocId'),
 CONSTRAINT 'books_ibfk_1' FOREIGN KEY ('DocId') REFERENCES 'document' 
 ('DocId')
 ON DELETE CASCADE ON UPDATE CASCADE
 ) ENGINE=InnoDB DEFAULT CHARSET=latin1

Таблица документов

 CREATE TABLE 'document' (
 'DocId' int(11) NOT NULL,
 'Title' varchar(50) NOT NULL,
 'PublishDate' date DEFAULT NULL,
 'AuthorId' varchar(10) DEFAULT NULL,
 'DocType' varchar(10) DEFAULT NULL,
 PRIMARY KEY ('DocId'),
 KEY 'AuthorId' ('AuthorId'),    
 CONSTRAINT 'document_ibfk_3' FOREIGN KEY ('AuthorId') REFERENCES 'author' 
 ('AuthorId')
 ) ENGINE=InnoDB DEFAULT CHARSET=latin1

Я создал сервер для своего PHP-сайта на XAMPP и использую mysql, но когда я пытаюсь вставить значения в таблицу Document, я получаю

error while inserting the recordsCannot add or update a child row: a foreign 
key constraint fails ('librarydb'.'document', CONSTRAINT 'document_ibfk_3' 
FOREIGN KEY ('AuthorId') REFERENCES 'author' ('AuthorId'))

Как решить эту проблему?

Теги:
database
foreign-keys
xampp

1 ответ

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

Ваши связанные поля author.AuthorId и document.AuthorId не определены одинаково.
Из документов:

Соответствующие столбцы внешнего ключа и ссылочного ключа должны иметь похожие типы данных. Размер и знак целочисленных типов должны быть одинаковыми. Длина типов строк не обязательно должна быть одинаковой.

Поэтому сделайте их как varchar (10) NOT NULL - или что вам нужно.

Ещё вопросы

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