完整性约束违规:1452 php mysql Web应用程序在最后一次插入调用时崩溃

时间:2017-12-27 23:36:11

标签: php mysql

我的POS系统php web应用程序遇到了令人沮丧的问题。我只会包含错误以保持简短。

MySQL数据库由customerorderorderline表组成(您需要知道的所有错误)。当我运行下面的PHP脚本时,它会在注释中显示ERROR的行崩溃。我的客户表有一个名为customerid的自动增量PK,这就是为什么我因插入前一个插入而在插入订单行时有一个1。

require 'connect.php';
$pdo = Database::connect();
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);


$sql = "INSERT INTO customer (customerid, fname, lname)
            VALUES (123456789, 'Dan', 'Dentin')";
$pdo->exec($sql);


$dt = new DateTime();
$dt = $dt->format('Y-m-d H:i:s');
$sql = "INSERT INTO `order` (date, customerid)
            VALUES ('$dt', 123456789)";
$pdo->exec($sql);

$sql = "INSERT INTO orderline (orderid, sprice, `status`)
            VALUES (1, 5647, 'PAID')";
$pdo->exec($sql);  //ERROR IT CRASHES HERE ON MY LAST INSERT CALL

错误说:

  

完整性约束违规:1452无法添加或更新子行:外键约束失败FOREIGN KEY(orderid)REFERENCES ordercustomerid)ON DELETE NO ACTION ON UPDATE NO行动)

我很困惑为什么我不能插入我的订单信息,如果需要更多信息请说明。

1 个答案:

答案 0 :(得分:2)

错误消息中的> head(as.data.frame(theData)) X1 X2 X3 X4 X5 X6 X7 1 0.86096810 0.2323373 0.9913265 0.8533702 0.09094279 0.54396940 0.87441769 2 0.09762566 0.9126343 0.4528663 0.9223295 0.02801973 0.11576152 0.64557643 3 0.82491603 0.4988662 0.8027047 0.8490365 0.01687182 0.38767569 0.67800481 4 0.82016269 0.5148852 0.2248160 0.8339404 0.49346620 0.07940575 0.08192492 5 0.34181443 0.3943045 0.2749949 0.9736331 0.76965589 0.30493388 0.82205653 6 0.83387527 0.5539088 0.2977256 0.7804322 0.61297012 0.74456391 0.88700870 X8 X9 X10 1 0.01152920 0.83665797 0.63328141 2 0.66086545 0.65325452 0.30709237 3 0.89277291 0.08738481 0.71723959 4 0.01893088 0.87709515 0.32186587 5 0.80091302 0.09594028 0.88764437 6 0.02912132 0.29151880 0.06874472 > 表示您将FOREIGN KEY (orderid) REFERENCES order (customerid)字段与orderline.orderid字段相关联。这会导致mysql尝试将order.customerid1匹配,从而产生您所描述的错误。

您应该更改外键以与123456789表中的id字段相关联(无论order表中主键的名称是什么)。