我现在已经在这5天了。我在这里阅读了所有的答案,我已经尝试了任何我可以找不到如何修复此缓存问题的选项。
我正在使用cakephp 2.4.4,可以升级,但我没有在任何change.log中看到我的问题 Percona MYSQL 5.6 Innodb
我们有一个模型,我们在循环中调用以插入行
App::import('Model', 'TableA');
$TableA = new TableA();
foreach($rows as $row){
$TableA->InsertRow($row);
}
然后我们有Table for TableA
我在TableA.Sku上添加了一个唯一索引以避免重复输入
class TableA extends AppModel {
var $name = 'TableA';
var $cacheQueries = false;
var $validate = array();
function InsertRow($data){
$this->clear();
try {
$result = $this->find('first', array(
'fields' => array(
'TableA.id',
),
'conditions' => array(
'TableA.Sku' => $data['Sku'],
),
));
pr($result);
if(!isset($result['TableA']['id'])){
$data['TimeStamp'] = strtotime("now");
$this->save($data);
}
return TRUE;
}
catch (Exception $e) {
pr($e);
$resultNow = $this->find('first', array(
'fields' => array(
'TableA.id',
),
'conditions' => array(
'TableA.Sku' => $data['Sku'],
),
));
pr($resultNow);
}
}
}
第一个循环$ Rows有多个时间相同的sku彼此跟随 第一个循环插入行 第二个循环给出:
array
(
)
SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry 'tue026991015' for key 'Sku'
INSERT INTO `ki`.`TableA` (`Sku`, `TimeStamp`) VALUES ('tue026991015', 1453858976)
Array
(
[TableA] => Array
(
[id] => 31951
)
)
我也在调试模式2中运行
在第二个循环中,查询应该返回id,并且循环不应该尝试插入行但不是。 我添加了var $ cacheQueries = false;在模型之上,以避免兑现。我不知道为什么会发生这种情况以及如何避免任何mysql兑现这个功能。
答案 0 :(得分:0)
当用户点击"刷新"填写表单并添加用户数据时发生的数据还是?您使用哪种方法来收集GET或POST数据?