进行时:
DELETE FROM jobs WHERE job_id =1 LIMIT 1 错误:
#1451 - Cannot delete or update a parent row: a foreign key constraint fails (paymesomething.advertisers, CONSTRAINT advertisers_ibfk_1 FOREIGN KEY (advertiser_id) REFERENCES jobs (advertiser_id)) 这是我的桌子:
CREATE TABLE IF NOT EXISTS advertisers ( advertiser_id int(11) unsigned NOT NULL AUTO_INCREMENT, name varchar(255) NOT NULL, password char(32) NOT NULL, email varchar(128) NOT NULL, address varchar(255) NOT NULL, phone varchar(255) NOT NULL, fax varchar(255) NOT NULL, session_token char(30) NOT NULL, PRIMARY KEY (advertiser_id), UNIQUE KEY email (email) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=2 ;
INSERT INTO advertisers (advertiser_id, name, password, email, address, phone, fax, session_token) VALUES (1, 'TEST COMPANY', '', '', '', '', '', '');
CREATE TABLE IF NOT EXISTS jobs ( job_id int(11) unsigned NOT NULL AUTO_INCREMENT, advertiser_id int(11) unsigned NOT NULL, name varchar(255) NOT NULL, shortdesc varchar(255) NOT NULL, longdesc text NOT NULL, address varchar(255) NOT NULL, time_added int(11) NOT NULL, active tinyint(1) NOT NULL, moderated tinyint(1) NOT NULL, PRIMARY KEY (job_id), KEY advertiser_id (advertiser_id,active,moderated) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=2 ;
INSERT INTO jobs (job_id, advertiser_id, name, shortdesc, longdesc, address, active, moderated) VALUES (1, 1, 'TEST', 'TESTTEST', 'TESTTESTES', '', 0, 0);
ALTER TABLE advertisers ADD CONSTRAINT advertisers_ibfk_1 FOREIGN KEY (advertiser_id) REFERENCES jobs (advertiser_id);
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
照原样,必须先删除Advertisers表中的行,然后才能删除它引用的Jobs表中的行。这个:
ALTER TABLE advertisers ADD CONSTRAINT advertisers_ibfk_1 FOREIGN KEY (advertiser_id) REFERENCES jobs (advertiser_id); ...实际上与应有的相反。实际上,这意味着您必须在作业表中有一条记录,然后才是广告商。因此,您需要使用:
ALTER TABLE jobs ADD CONSTRAINT advertisers_ibfk_1 FOREIGN KEY (advertiser_id) REFERENCES advertisers (advertiser_id); 纠正外键关系后,您的delete语句将起作用。来源:stack overflow