完整性约束冲突:上次插入调用时1452 php mysql web应用程序崩溃

完整性约束冲突:上次插入调用时1452 php mysql web应用程序崩溃,php,mysql,Php,Mysql,我的POS系统php web应用程序有一个令人沮丧的问题。为了简短起见,我只将错误包括在内 MySQL数据库由一个客户、订单、和订单行表组成(您需要知道的关于我得到的错误的所有信息)。当我运行下面的PHP脚本时,它在一行出现错误注释时崩溃。我的customer表有一个名为customerid的自动递增主键,这就是为什么在插入到orderline时,由于前面的插入,我的主键为1 require 'connect.php'; $pdo = Database::connect(); $pdo->

我的POS系统php web应用程序有一个令人沮丧的问题。为了简短起见,我只将错误包括在内

MySQL数据库由一个
客户
订单
、和
订单行
表组成(您需要知道的关于我得到的错误的所有信息)。当我运行下面的PHP脚本时,它在一行出现错误注释时崩溃。我的customer表有一个名为customerid的自动递增主键,这就是为什么在插入到orderline时,由于前面的插入,我的主键为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无法添加或更新子行:外键约束失败外键(
orderid
)引用
order
customerid
)关于删除没有操作关于更新没有操作)

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

错误消息中的
外键(orderid)引用订单(customerid)
表示您将
orderline.orderid
字段与
order.customerid
字段关联。这导致mysql试图将
1
123456789
匹配,从而产生您描述的错误


您应该将外键更改为与
order
表中的
id
字段相关(无论
order
表中主键的名称是什么).

您如何知道新插入的订单的ID为1?您似乎还将orderline表中的orderid字段与order表中的customer ID字段相关联。@ThomasWeller我知道它的ID为1,因为order表为空,这是第一个条目,然后是order表的自动递增主键将是1,因为它是第一个条目。@CP\n但不一定是这样。即使表为空,自动增量值也可能与1不同。@执行脚本之前,我确保截断订单表,使其始终从1开始。我认为这是正确的,目前正在尝试修复我的数据库创建脚本。这是正确的答案,非常感谢你们,我现在明白了,我不应该依赖我的ER图中的MySQL工作台正向工程。