Mysql
MySQL外鍵錯誤
我需要更新 a 中的行
child table
,但是在執行程式碼時出現以下錯誤,公司表
CREATE TABLE `company` ( `Company_id` int(11) NOT NULL AUTO_INCREMENT, `Company_name` varchar(255) DEFAULT NULL, `BuildingNameNumber` varchar(255) NOT NULL, `Street_name` varchar(255) NOT NULL, `Area` varchar(255) NOT NULL, `Landmark` varchar(255) NOT NULL, `PIN_code` int(6) NOT NULL, `PhoneMobile_number` char(15) NOT NULL, `Website` varchar(255) NOT NULL, `Fax` varchar(255) NOT NULL, `Email` varchar(255) NOT NULL, `Upload_logo` varchar(255) DEFAULT NULL, `tin_number` varchar(50) NOT NULL, `CreatedOn` datetime DEFAULT NULL, `CreatedBy` varchar(255) DEFAULT NULL, `UpdatedOn` datetime DEFAULT NULL, `UpdatedBy` varchar(255) DEFAULT NULL, `is_active` bit(1) DEFAULT b'0', PRIMARY KEY (`Company_id`), );
服務表
CREATE TABLE `service` ( `service_id` int(11) NOT NULL AUTO_INCREMENT, `company_id` int(11) NOT NULL, `serial_number` varchar(256) DEFAULT NULL, `service_name` varchar(256) DEFAULT NULL, `price` float(10,2) NOT NULL DEFAULT '0.00', `tax` float(5,2) NOT NULL DEFAULT '0.00', `is_active` bit(1) NOT NULL DEFAULT b'1', PRIMARY KEY (`service_id`), KEY `company_id` (`company_id`), CONSTRAINT `service_ibfk_1` FOREIGN KEY (`company_id`) REFERENCES `company` (`Company_id`) ON DELETE CASCADE ON UPDATE CASCADE );
當我嘗試更新服務表時,出現錯誤
**Error Code: 1452. Cannot add or update a child row: a foreign key constraint fails (`etailershop`.`service`, CONSTRAINT `service_ibfk_1` FOREIGN KEY (`company_id`) REFERENCES `company` (`Company_id`) ON DELETE CASCADE ON UPDATE CASCADE) 0.031 sec**
我試圖找到錯誤,我確實了解外鍵約束,但我找不到這有什麼問題,類似的結構和約束表工作正常。
您收到此錯誤是因為您嘗試根據目前儲存在表中的值將行更新到
service
表中,該表沒有該欄位的有效值。company_id``company
如果您發布更多程式碼,有人可以幫助您診斷具體原因。
我在我的案例中發現了問題,我在更新查詢中使用了“AND”,我刪除了“AND”運算符,它現在工作正常,更新語句和解決的更新語句如下所示,
更新聲明
UPDATE service SET company_id = ‘183’ AND service_name = ‘Story Books’ AND price =‘400.00’ WHERE service_id = ‘9’ LIMIT 1
更新聲明$$ SOLVED $$
UPDATE service SET company_id = 187, service_name = ‘Test Books’, price = 500.00 WHERE service_id = 7
小的變化,但現在工作正常。