cakephp检查重复的行

时间:2016-01-27 04:23:33

标签: php mysql cakephp caching

我现在已经在这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兑现这个功能。

1 个答案:

答案 0 :(得分:0)

当用户点击"刷新"填写表单并添加用户数据时发生的数据还是?您使用哪种方法来收集GET或POST数据?