[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Ошибка при добавлении новой записи.
Ramzil_Nixon
Создал связь таблиц следующим образом:
ALTER TABLE forum_for_kategory
ADD FOREIGN KEY (id_kategory)
REFERENCES forum_kategory_table(id)


Когда делаю запрос на добавление новой записи: (Там же в консоли)

INSERT INTO `forum_for_kategory` SET `name_for_kategory`='Основная под категория', `position`='1', `id_kategory`='1', `description`='Описаня под категории';


И валит мне ошибку:

#1452 - Cannot add or update a child row: a foreign key constraint fails (`test`.`forum_for_kategory`, CONSTRAINT `forum_for_kategory_ibfk_1` FOREIGN KEY (`id_kategory`) REFERENCES `forum_kategory_table` (`id`) ON DELETE CASCADE ON UPDATE CASCADE)


Вот такая фигня.. С чего бы это?



Спустя 2 минуты, 26 секунд (30.11.2011 - 17:04) RCuPeR написал(а):
Явно неверно связь сделал.



Спустя 1 минута, 1 секунда RCuPeR написал(а):
Попробуй поставить сюда: id_kategory NULL по умолчанию.

Спустя 2 минуты, 24 секунды (30.11.2011 - 17:07) Ramzil_Nixon написал(а):
RCuPeR
Еще и такая есть вот:
ALTER TABLE forum_for_kategory
ADD FOREIGN KEY (id_kategory)
REFERENCES forum_kategory_table(id)

ON UPDATE CASCADE
ON DELETE CASCADE
;

Спустя 2 минуты, 37 секунд (30.11.2011 - 17:09) RCuPeR написал(а):
Цитата
Попробуй поставить сюда: id_kategory NULL по умолчанию.

Спустя 27 секунд (30.11.2011 - 17:10) Ramzil_Nixon написал(а):
Цитата (RCuPeR @ 30.11.2011 - 14:04)
id_kategory NULL



А этот NULL куда сунуть, я чет не понял

Спустя 1 минута, 52 секунды (30.11.2011 - 17:12) RCuPeR написал(а):
Ну, для поля id_kategory установи значение по умолчанию NULL.
Покажи полную структуру обеих таблиц.

Спустя 1 минута, 32 секунды (30.11.2011 - 17:13) Ramzil_Nixon написал(а):
CREATE TABLE  `test`.`forum_kategory_table` (
`id` INT NOT NULL AUTO_INCREMENT ,
`name_forum_kategory` VARCHAR( 255 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL ,
`position_forum_kategory` INT NOT NULL ,
PRIMARY KEY ( `id` )
)
ENGINE = INNODB;


CREATE TABLE  `test`.`forum_for_kategory` (
`id` INT NOT NULL AUTO_INCREMENT ,
`name_for_kategory` VARCHAR( 255 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL ,
`position` INT NOT NULL ,
`id_kategory` INT NOT NULL ,
`description` VARCHAR( 255 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL ,
PRIMARY KEY ( `id` )
)
ENGINE = INNODB;


Вот структуры таблиц,

А это запрос на связь таблиц

ALTER TABLE forum_for_kategory
ADD FOREIGN KEY (id_kategory)
REFERENCES forum_kategory_table(id)
ON UPDATE CASCADE
ON DELETE CASCADE
;

Спустя 3 минуты, 32 секунды (30.11.2011 - 17:17) RCuPeR написал(а):
Что это у тебя за кодировка такая ?

Вот, пробуй.

CREATE TABLE `test`.`forum_for_kategory` (
`id` INT NOT NULL AUTO_INCREMENT ,
`name_for_kategory` VARCHAR( 255 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL ,
`position` INT NOT NULL ,
`id_kategory` INT NULL ,
`description` VARCHAR( 255 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL ,
PRIMARY KEY ( `id` )
)
ENGINE = INNODB;

Спустя 59 секунд (30.11.2011 - 17:18) Placido написал(а):
А у тебя в таблице forum_kategory_table есть запись с id = 1?

Спустя 2 минуты, 41 секунда (30.11.2011 - 17:20) Ramzil_Nixon написал(а):
Цитата (RCuPeR @ 30.11.2011 - 14:17)
Что это у тебя за кодировка такая ?

Вот, пробуй.



Кодировка UTF-8
.

Нет по прежнему так

Спустя 30 секунд (30.11.2011 - 17:21) Ramzil_Nixon написал(а):
Цитата (Placido @ 30.11.2011 - 14:18)
А у тебя в таблице forum_kategory_table есть запись с id = 1?


Да есть

Спустя 1 минута, 33 секунды (30.11.2011 - 17:22) RCuPeR написал(а):
Точно ту же ошибку выдает ?

Давай все, структуру и дамп по минимуму.

Спустя 1 минута, 36 секунд (30.11.2011 - 17:24) Ramzil_Nixon написал(а):
Цитата (RCuPeR @ 30.11.2011 - 14:22)
дамп


Глупый наверное вопрос.. Но что такое дамп?


#1452 - Cannot add or update a child row: a foreign key constraint fails (`test`.`forum_for_kategory`, CONSTRAINT `forum_for_kategory_ibfk_1` FOREIGN KEY (`id_kategory`) REFERENCES `forum_kategory_table` (`id`))


А ошибка вот такая


CREATE TABLE  `test`.`forum_kategory_table` (
`id` INT NOT NULL AUTO_INCREMENT ,
`name_forum_kategory` VARCHAR( 255 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL ,
`position_forum_kategory` INT NOT NULL ,
PRIMARY KEY ( `id` )
)
ENGINE = INNODB;


CREATE TABLE  `test`.`forum_for_kategory` (
`id` INT NOT NULL AUTO_INCREMENT ,
`name_for_kategory` VARCHAR( 255 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL ,
`position` INT NOT NULL ,
`id_kategory` INT NULL ,
`description` VARCHAR( 255 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL ,
PRIMARY KEY ( `id` )
)
ENGINE = INNODB;

Спустя 4 минуты, 16 секунд (30.11.2011 - 17:28) RCuPeR написал(а):
Дамп - наличие записей в таблице. Иными словами - бэкап.
Давай все, что есть. Буду у себя ковырять.

Спустя 2 минуты, 11 секунд (30.11.2011 - 17:30) Ramzil_Nixon написал(а):
CREATE TABLE  `test`.`forum_kategory_table` (
`id` INT NOT NULL AUTO_INCREMENT ,
`name_forum_kategory` VARCHAR( 255 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL ,
`position_forum_kategory` INT NOT NULL ,
PRIMARY KEY ( `id` )
)
ENGINE = INNODB;

Здесь есть одна запись:


NSERT INTO  `forum_kategory_table` 
SET `name_forum_kategory` = 'Первая категория форума',
`position_forum_kategory` = '1';


После чего создал связь. И не могу сюда добавить запись:

CREATE TABLE  `test`.`forum_for_kategory` (
`id` INT NOT NULL AUTO_INCREMENT ,
`name_for_kategory` VARCHAR( 255 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL ,
`position` INT NOT NULL ,
`id_kategory` INT NOT NULL ,
`description` VARCHAR( 255 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL ,
PRIMARY KEY ( `id` )
)
ENGINE = INNODB;

Спустя 6 минут, 22 секунды (30.11.2011 - 17:37) RCuPeR написал(а):
У меня прошел вот такой запрос:

INSERT INTO  `romanzorin`.`forum_for_kategory` (
`id` ,
`name_for_kategory` ,
`position` ,
`id_kategory` ,
`description`
)
VALUES (
NULL , 'имя', '1', '1', 'описание'
);

Спустя 2 минуты, 25 секунд (30.11.2011 - 17:39) RCuPeR написал(а):
Все работает.

--
-- Структура таблицы `forum_kategory_table`
--

CREATE TABLE IF NOT EXISTS `forum_kategory_table` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name_forum_kategory` varchar(255) NOT NULL,
`position_forum_kategory` int(11) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=2 ;

--
-- Дамп данных таблицы `forum_kategory_table`
--

INSERT INTO `forum_kategory_table` (`id`, `name_forum_kategory`, `position_forum_kategory`) VALUES
(1, 'Первая категория форума', 1);





--
-- Структура таблицы `forum_for_kategory`
--

CREATE TABLE IF NOT EXISTS `forum_for_kategory` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name_for_kategory` varchar(255) NOT NULL,
`position` int(11) NOT NULL,
`id_kategory` int(11) NOT NULL,
`description` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=4 ;

--
-- Дамп данных таблицы `forum_for_kategory`
--

INSERT INTO `forum_for_kategory` (`id`, `name_for_kategory`, `position`, `id_kategory`, `description`) VALUES
(1, 'бла-бла-бла', 1, 1, 'вфыв'),
(2, 'бла-бла2-бла', 1, 0, '2вфыв'),
(3, 'бла-бла-бла', 0, 0, 'вфыв');


Спустя 2 минуты (30.11.2011 - 17:41) RCuPeR написал(а):
Ой, стоп... Я пробаранил.
Между какими полями связь нужно установить ?
я так понимаю: `forum_kategory_table`.`id` и `forum_for_kategory`.`id_kategory` ?

Спустя 2 минуты, 37 секунд (30.11.2011 - 17:44) Ramzil_Nixon написал(а):

Цитата
я так понимаю: `forum_kategory_table`.`id` и `forum_for_kategory`.`id_kategory` ?


Да правильно.

"forum_kategory_table" это категории на форуме.


"forum_for_kategory" под категории. В случае если мы удалим категорию, чтобы все подкатегории которые входят в него тоже удалились.



Спустя 2 минуты, 22 секунды (30.11.2011 - 17:46) Ramzil_Nixon написал(а):
А если подкатегория удалилась, то все темы в этих категориях должен удалиться, а если темы удалились, то и все комментариии к тем темам.

Как минимум мне 4 таблицы надо соединить

Спустя 6 минут, 58 секунд (30.11.2011 - 17:53) RCuPeR написал(а):
Готово.
Айне момент битте. Сейчас выложу листинг.

Спустя 4 минуты, 1 секунда (30.11.2011 - 17:57) RCuPeR написал(а):

--
-- Структура таблицы `forum_kategory_table`
--

CREATE TABLE IF NOT EXISTS `forum_kategory_table` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name_forum_kategory` varchar(255) NOT NULL,
`position_forum_kategory` int(11) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=2 ;

--
-- Дамп данных таблицы `forum_kategory_table`
--

INSERT INTO `forum_kategory_table` (`id`, `name_forum_kategory`, `position_forum_kategory`) VALUES
(1, 'Первая категория форума', 1);





--
-- Структура таблицы `forum_for_kategory`
--

CREATE TABLE IF NOT EXISTS `forum_for_kategory` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name_for_kategory` varchar(255) NOT NULL,
`position` int(11) NOT NULL,
`id_kategory` int(11) NOT NULL,
`description` varchar(255) NOT NULL,
PRIMARY KEY (`id`),
KEY `id_kategory` (`id_kategory`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=5 ;

--
-- Дамп данных таблицы `forum_for_kategory`
--

INSERT INTO `forum_for_kategory` (`id`, `name_for_kategory`, `position`, `id_kategory`, `description`) VALUES
(4, 'имя', 123, 1, 'дескрипшин');

--
-- Ограничения внешнего ключа сохраненных таблиц
--






ALTER TABLE `forum_for_kategory` ADD INDEX ( `id_kategory` );



--
-- Ограничения внешнего ключа таблицы `forum_for_kategory`
--
ALTER TABLE `forum_for_kategory` ADD CONSTRAINT `tree_fk_1` FOREIGN KEY (`id_kategory`) REFERENCES `forum_kategory_table` (`id`) ON DELETE CASCADE ON UPDATE CASCADE;


Спустя 1 минута, 20 секунд (30.11.2011 - 17:58) RCuPeR написал(а):
Как-то форум неверно SQL комментарии форматирует rolleyes.gif

Спустя 1 минута, 50 секунд (30.11.2011 - 18:00) Ramzil_Nixon написал(а):
Wenn, wie Sie sich entschieden haben erklärt, es wäre cool smile.gif

P.S. >> Если б обяснил ты мне как исправил было бы здорово smile.gif Мне как бы еще 2 таблицы помимо этих придется связать smile.gif

Спустя 1 минута, 40 секунд (30.11.2011 - 18:02) inpost написал(а):
Если я правильно понял, то ты сделал связь из одной таблице ко второй, по определённому полю, а значит в родителе должна уже содержаться запись с таким ID, (Id_parent), по которому делаешь связь, и к ней прикрепляется запись из дочерней таблицы связей. Они же связанные таблицы.

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

Спустя 4 минуты, 5 секунд (30.11.2011 - 18:06) RCuPeR написал(а):
У тебя не было индекса для:
ALTER TABLE `forum_for_kategory` ADD INDEX ( `id_kategory` );


Да и саму связку чуть не верно делал:
ALTER TABLE `forum_for_kategory` ADD CONSTRAINT `tree_fk_1` FOREIGN KEY (`id_kategory`) REFERENCES `forum_kategory_table` (`id`) ON DELETE CASCADE ON UPDATE CASCADE;


Inpost, все верно говорит. Только в теории. Практика и собственно, сам листинг, выше.

Спустя 5 минут, 49 секунд (30.11.2011 - 18:12) Ramzil_Nixon написал(а):
CONSTRAINT `tree_fk_1`


Вот это у меня не было, я смотрю. А что это?

Спустя 3 минуты, 23 секунды (30.11.2011 - 18:15) RCuPeR написал(а):
Цитата (Ramzil_Nixon @ 30.11.2011 - 15:00)
Wenn, wie Sie sich entschieden haben erklärt, es wäre cool smile.gif

Не пользуйся гугл переводчиком, он такой бред выдает.
Вернее будет так:
wenn du es mir erklären hättest wie man- es verbessert wäre echt cool.

Спустя 2 минуты, 12 секунд (30.11.2011 - 18:17) RCuPeR написал(а):
Цитата (Ramzil_Nixon @ 30.11.2011 - 15:12)
CONSTRAINT `tree_fk_1`


Вот это у меня не было, я смотрю. А что это?

Это имя внешнего ключа на случай удаления или модификации.

Спустя 30 секунд (30.11.2011 - 18:18) Ramzil_Nixon написал(а):
Цитата (RCuPeR @ 30.11.2011 - 15:15)
Вернее будет так:

Это не гугл, это то что у меня в голове после школы осталось, да и переводчик еще biggrin.gif

Спустя 35 секунд (30.11.2011 - 18:18) Ramzil_Nixon написал(а):
Цитата (RCuPeR @ 30.11.2011 - 15:17)
Это имя внешнего ключа на случай удаления или модификации.


А это постоянно так останеться, или будет меняться?

Спустя 3 минуты, 37 секунд (30.11.2011 - 18:22) RCuPeR написал(а):
Цитата (Ramzil_Nixon @ 30.11.2011 - 15:18)
Цитата (RCuPeR @ 30.11.2011 - 15:17)
Это имя внешнего ключа на случай удаления или модификации.


А это постоянно так останеться, или будет меняться?

Не понял, что ты имеешь введу ?

Имя ты можешь указать любое, это не важно. Но оно должно быть.

Спустя 5 минут, 40 секунд (30.11.2011 - 18:28) Ramzil_Nixon написал(а):
Понятно

Спустя 1 минута, 36 секунд (30.11.2011 - 18:29) RCuPeR написал(а):
Цитата (Ramzil_Nixon @ 30.11.2011 - 15:28)
Понятно

Трудись.
Кстати, если точно помогло можно и карму повысить rolleyes.gif

Спустя 3 минуты, 19 секунд (30.11.2011 - 18:33) Ramzil_Nixon написал(а):
RCuPeR, не могу сегодня, уже нажал один раз biggrin.gif

"Unknown column 'data' in 'field list'" а что за ошибка? вылезла после того как свой проект на ПК из ноута перевел, хотя уверен что таблицы правильны.

Спустя 4 минуты, 37 секунд (30.11.2011 - 18:37) RCuPeR написал(а):
Ну там же все написано. Неизвестная колонка "data". Проверь еще раз - все ли верно перенес.
Потом проверь запросы на синтаксические ошибки.


_____________
Миллионы приходят, уходят, не в них счастье. Самым важным на свете всегда будут люди в этой комнате, вот здесь, сейчас...

user posted image
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.