MySQL ошибка 1451 - PullRequest
       12

MySQL ошибка 1451

3 голосов
/ 22 декабря 2010

У меня ошибка mysql с кодом 1451.

Невозможно удалить или обновить родительскую строку: сбой ограничения внешнего ключа (online_store_admin. osa_admin_logs, CONSTRAINT fk_admins_logs FOREIGN KEY (aid)

здесь SQL заявление:


drop table if exists osa_admins;
create table if not exists osa_admins(
 aid int unsigned not null auto_increment, 
 uid varchar(50) not null, 
 pass char(41) not null, 
 erp_id int unsigned not null, 
 last_login int unsigned not null,
 is_block tinyint unsigned not null,
 menus varchar(50) not null,
 is_login tinyint unsigned not null,
 ip_login char(15) not null,

 constraint idx_osa_admins primary key using btree(aid)
);
insert into osa_admins value
(NULL, 'root', password('6789'), '0', '0', '0', '*', '0', '127.000.000.001'),
(NULL, 'ryu', password('6789'), '0', '0', '0', '*', '0', '127.000.000.001');

drop table if exists osa_admin_logs;
create table if not exists osa_admin_logs(
 lid bigint unsigned not null,
 aid int unsigned not null,
 dates int unsigned not null,
 logs text not null,

 constraint idx_osa_admin_logs primary key using btree(lid),
 constraint fk_admins_logs foreign key (aid)
  references osa_admins(aid)
  match full
  on update cascade
  on delete cascade
);
insert into osa_admin_logs values
(NULL, '2', '0', 'some action here'),
(NULL, '2', '0', 'again, some action here');

Проблема возникает, когда я использую это утверждение:

удалить из osa_admins, где aid = '2';

Я думаю, что установил "Каскад удаления". кто-нибудь знает как удалить каскад? так что мне не нужно вручную определять данные osa_admin_logs. о, я использую innodb в качестве движка БД (MySQL по умолчанию, который у меня есть).

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

Спасибо.

Ответы [ 2 ]

11 голосов
/ 15 апреля 2013

Используйте для этого следующие команды:

SET foreign_key_checks = 0; 
DELETE FROM your_table_name WHERE your_condition;
SET foreign_key_checks = 1;
7 голосов
/ 22 декабря 2010

удалить match full из ограничения

Использование явного предложения MATCH не будет иметь указанного эффекта, а также приведет к игнорированию предложений ON DELETE и ON UPDATE.По этим причинам указание MATCH следует избегать.

MySql docs http://dev.mysql.com/doc/refman/5.5/en/innodb-foreign-key-constraints.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...