Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Как удалять строки из таблицы?
 
 автор: Швейк   (02.02.2005 в 13:05)
 
 

Пытаюсь во таким образом:


DELETE FROM agent WHERE agentID=1;


А получаю вот такой ответ:
ERROR 1217: Cannot delete or update a parent row: a foreign key constraint fails

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

Заранее благодарен.

Бравый солдат.

   
 
 автор: Shorr Kan   (02.02.2005 в 13:48)   письмо автору
 
   для: Швейк   (02.02.2005 в 13:05)
 

Я не уверен, но единица в кавычках быть не должна?

   
 
 автор: Швейк.   (02.02.2005 в 14:39)
 
   для: Shorr Kan   (02.02.2005 в 13:48)
 

Вы абсолюто правы, единицы должна быть в кавычках, это я очепятался прямо здесь.
Просто даже "вручную" из коносли и из MySQL Control Centr не удаляется.

ERROR 1217: Cannot delete or update a parent row: a foreign key constraint fails

Каким-то образом внешний ключ вмешивается.

   
 
 автор: Be4ep   (02.02.2005 в 15:50)   письмо автору
 
   для: Швейк.   (02.02.2005 в 14:39)
 

проверь атрибуты файла базы. может быть он только для чтения(у меня такое было)

   
 
 автор: Швейк   (02.02.2005 в 17:08)
 
   для: Be4ep   (02.02.2005 в 15:50)
 

Чудеса на виражах!
И вправду стоит опция "Только для чтения".
Но!
Я убираю опцию с папки, а она восстанавливется сама. Чудеса, в первый раз такое вижу... Как это возможно???

   
 
 автор: Be4ep   (02.02.2005 в 22:39)   письмо автору
 
   для: Швейк   (02.02.2005 в 17:08)
 

странно как то получается.... значит надо покапаться в настройках MySQL. только вот где незнаю

   
 
 автор: Швейк   (02.02.2005 в 23:45)
 
   для: Shorr Kan   (02.02.2005 в 13:48)
 

Так что же делать?

   
 
 автор: cheops   (03.02.2005 в 00:21)   письмо автору
 
   для: Швейк   (02.02.2005 в 13:05)
 

А версия MySQL какая? Часом не 4.1 или 5.0... мне эта ошибка очень нравится, так как если это правда, то в ней сообщается что в MySQL появилась поддержка внешних ключей и теперь удалить запись нельзя, если она является родительской для других записей.

   
 
 автор: Швейк   (03.02.2005 в 09:39)
 
   для: cheops   (03.02.2005 в 00:21)
 

MySQL 4.1
Уважаемый Cheops, а где я могу поподробнее узнать о внешнем ключе? Не совсеи понятно, что и для чего он.
А также, как мне теперь решать эту проблему - функция удаления очень нужна.

С уважением,
Бравый солдат.

   
 
 автор: cheops   (03.02.2005 в 13:31)   письмо автору
 
   для: Швейк   (03.02.2005 в 09:39)
 

Точно не найдёте в различных описаниях MySQL, так как особенность это появилась судя по всему только начиная с весии 4.1. Нужно ориентироваться на какую-нибудь фундаментальную книгу по SQL, вроде "SQL" Дж. Грофф, П. Вайнберг. Этот механизм предназначен для сохранении целостности базы данных, т.е. если между таблицами существует связь (значение первичного ключа первой таблицы используется в качестве вторичного во второй), то удаление записи с первичным ключом на который ссылаются из других таблиц приведёт к нарушению целостности базы данных. Раньше об этом нужно было заботится самостоятельно, теперь судя по всему в этом отпала необходимость.
Не могли бы вы выложить структуру вашей базы данных, иначе сложно сказать, что то определённое по поводу того, как удалить запись...

   
 
 автор: Швейк   (03.02.2005 в 18:14)
 
   для: cheops   (03.02.2005 в 13:31)
 

Так может проще установить MySQL 3xxx?
Структуру подготовлю и выложу

   
 
 автор: cheops   (03.02.2005 в 19:09)   письмо автору
 
   для: Швейк   (03.02.2005 в 18:14)
 

Лучше 4.0.xx - я пока не понял, что к чему использую её - надёжная как танк и особенности её описаны во многих источниках...

   
 
 автор: Швейк   (03.02.2005 в 19:14)
 
   для: cheops   (03.02.2005 в 19:09)
 

ОК.
Данную версию я оставил, описания таблиц и их взяимосвязь выложил ниже.

С уважением.

   
 
 автор: Швейк   (03.02.2005 в 18:37)
 
   для: cheops   (03.02.2005 в 13:31)
 

Уважаемый Cheops,
выкладываю структуры базы данных (см. прикрепленный файл).

Опыт в программировании 2 месяца, т.е. никакого. Книга попалась довольно толковая, без "загрузок" Энди Харрис "PHP и MySQL для начинающих", плюс учебник от SoftTime, разобрал почти все примеры, но вот здесь стопор.

Вкратце о структуре базы:
создано четыры таблицы: agent, operation, specialty, agent_specialty. Практически все связаны между собой внешними ключами.
Приоритетной таблицей являестя таблица agent, необходима возможность добавлять, редактировать и удалять записи. Последнее, вот, не выходит.

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

С уважением,
Бравый солдат.

   
 
 автор: cheops   (03.02.2005 в 19:14)   письмо автору
 
   для: Швейк   (03.02.2005 в 18:37)
 

Попробуйте действительно версию 4.0.22 какую-нибудь... для работы лучше не рисунок (тем более такой здоровый :), а SQL-файл с операторами CREATE, создать его можно используя утилиту mysqldump
mysqldump -u имя_пользователя -p пароль имя_базы_данных>файл

   
 
 автор: Швейк   (03.02.2005 в 19:37)
 
   для: cheops   (03.02.2005 в 19:14)
 

Уважаемый Cheops, высылаю SQL-файл базы данных (см. прикрепленный файл).
Вырвал себе уже все волосы на голове :)
Для меня первичная цель - удалять данные из таблицы agents.

С уважением,
Бравый Солдат.

   
 
 автор: cheops   (03.02.2005 в 23:02)   письмо автору
 
   для: Швейк   (03.02.2005 в 19:37)
 

Развернул базу данных в MySQL 4.0.22 записи таблицы agents удаляются без вопросов. Книга у вас написана по более старой версии, поэтому можете встретить некоторые расхождения.

   
 
 автор: Швейк   (04.02.2005 в 00:08)
 
   для: cheops   (03.02.2005 в 23:02)
 

Ничего не понимаю.
У меня MySQL 4.1 и не удаляется.
Мистика....

   
 
 автор: cheops (из ННГУ)   (04.02.2005 в 14:10)
 
   для: Швейк   (04.02.2005 в 00:08)
 

Версия 4.1 по сравнению с 4.0 является поворотной - там очень много изменений, у вас скоее всего стоит какая-нибудь 4.1.7, это выше чем та же 4.0.22.

   
 
 автор: Швейк   (05.02.2005 в 14:05)
 
   для: cheops (из ННГУ)   (04.02.2005 в 14:10)
 

Все разрешилось.
Снес базу и построил её заново - все удаляется.

Всем спасибо за подмогу!.

С уважением,
Бравый солдат.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования