mysql错误1451

时间:2010-12-22 02:09:57

标签: mysql mysql-error-1451

我在代码1451中遇到mysql错误。

  

无法删除或更新父行:外键约束失败(online_store_adminosa_admin_logs,CONSTRAINT fk_admins_logs FOREIGN KEY(aid)参考osa_adminsaid))

这里是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 个答案:

答案 0 :(得分:11)

使用以下命令执行此操作:

SET foreign_key_checks = 0; 
DELETE FROM your_table_name WHERE your_condition;
SET foreign_key_checks = 1;

答案 1 :(得分:7)

从约束中删除match full

  

使用显式的MATCH子句   没有指定的效果,和   还会导致ON DELETE和ON UPDATE   条款被忽略。对于这些   原因,指定MATCH应该是   避免。

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