任何人,请看一下我在PHP中的代码,为什么它失败了。
CODE
$mysqli->query('LOCK TABLES fg_out_body READ,fg_out_head READ');
$sqlCheck = "SELECT * FROM fg_out_body WHERE part_no='$partno' AND lot_no='$lotno'";
$resultCheck = $mysqli->query($sqlCheck);
if ($resultCheck->num_rows > 0) {
echo 'record exists';
} else {
$sqlHead = "INSERT IGNORE INTO fg_out_head(fg_doc_no,`type`,`date`,acc_no,
prod_loc,destination,user_id)
VALUES('$docno','$tipe','$tanggal','$customer',
'$prodloc','$destination','$userid')";
if ($mysqli->query($sqlHead)) {
echo "success";
}else{
echo "failed";
}
}
但是,如果我将查询直接粘贴到mysql,它可以正常运行。
CODE
INSERT IGNORE INTO
fg_out_head(fg_doc_no,`type`,`date`,acc_no,prod_loc,destination,user_id)
VALUES('FVOT-00001','VARIANCE OUT','2016-04-27','','','Other','')
来自控制台的此消息
Table 'fg_out_head' was locked with a READ lock and can't be updated
答案 0 :(得分:1)
以下是MYSQL Manual
的摘录锁定获取规则
要在当前会话中获取表锁,请使用LOCK TABLES语句。可以使用以下锁定类型:
READ [LOCAL] lock:
持有锁的会话可以读取表(但不能写入)。
因此,尝试设置WRITE锁定,然后您将被允许从此会话写入锁定的表