2016-03-21 4 views
0

Я пытаюсь вставить эти значения в столбец ARTIST_NAME на одном из моих таблиц в моей базе данных MySQLЯ не могу вставить значения в мою таблицу на MySQL

INSERT INTO tbl_Artist (Artist_Name)VALUES ('Taylor Swift'); 
INSERT INTO tbl_Artist (Artist_Name)VALUES ('Elton John'); 
INSERT INTO tbl_Artist (Artist_Name)VALUES ('Kanye West'); 
INSERT INTO tbl_Artist (Artist_Name) VALUES ('Fallout Boy'); 

Но всякий раз, когда я пытаюсь я получаю эту ошибку !

#1452 - Cannot add or update a child row: a foreign key constraint fails 
(`b4014107_db2/tbl_Artist`, CONSTRAINT `tbl_Artist_ibfk_1` FOREIGN KEY 
(`Artist_id`) REFERENCES `tbl_Artist` (`Artist_id`) 

Я предполагаю, что это что-то делать с внешним ключом я назначен на колонку Artist_id в самой таблице. Я просто не знаю, в чем проблема и как исправить ситуацию.

Я могу предоставить вам весь код таблицы, если это поможет.

CREATE TABLE `tbl_Artist` ( `Artist_id` int(11) NOT NULL auto_increment,   
`Artist_Name` varchar(32) NOT NULL,  PRIMARY KEY  (`Artist_id`),  CONSTRAINT 
`tbl_Artist_ibfk_1` FOREIGN KEY (`Artist_id`) REFERENCES `tbl_Artist` 
(`Artist_id`)) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=latin1 

Любая помощь была бы принята с благодарностью.

ответ

2

Это ваше определение таблицы:

CREATE TABLE `tbl_Artist` (
    `Artist_id` int(11) NOT NULL auto_increment,  
    `Artist_Name` varchar(32) NOT NULL, 
    PRIMARY KEY (`Artist_id`), 
    CONSTRAINT `tbl_Artist_ibfk_1` FOREIGN KEY (`Artist_id`) REFERENCES `tbl_Artist` (`Artist_id`) 
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=latin1; 

Это на самом деле вроде смешно. У вас есть ссылка внешнего ключа на первичный ключ обратно к первичному ключу самой таблицы. Как следствие, вы никогда не сможете вставлять строки, потому что вам нужна строка для ссылки.

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

CREATE TABLE `tbl_Artist` (
    `Artist_id` int(11) NOT NULL auto_increment,  
    `Artist_Name` varchar(32) NOT NULL, 
    PRIMARY KEY (`Artist_id`) 
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=latin1; 
+0

Я пытался уронить внешний ключ, но теперь я получаю Ошибка ошибки на переименовании «./b4014107_db2/tbl_Artist» до»./b4014107_db2/#sql2-1ebb-382' (егто: 152 –

+0

@JackRogers. ... –

+0

Но Artist_id - это внешний ключ, связанный с двумя другими таблицами, должен ли я их также удалить? –

0

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

Смежные вопросы