Codeigniter 和 mariadb 缺少一行

Codeigniter and mariadb missing one row

我从 HANA 数据库中选择了 2k 数据并将其插入到 mariadb 10.1.19,但我总是缺少一行(不是第一行或最后一行)。

这是我的代码

function sync_supplier($user = null){
    ignore_user_abort(true);

    set_time_limit(0);
    $this->db->truncate('suppliers');

    $dbjpa = $this->load->database('jpa',TRUE);

    $field = '"CardCode","CardName","CardType","GroupCode","Phone1","CntctPrsn","City","E_Mail"';
    $where = "'Y'";

    $result = $dbjpa->query('SELECT '.$field.' FROM JAVAPRIMA_ADI."OCRD" WHERE "frozenFor" != '.$where);

    $resultSupplier = $result->result_array();

    $count = 0;
    foreach($resultSupplier as $supplier) { 
            $data = array(
                'CardCode'=> $supplier['CardCode'],
                'CardName'=> $supplier['CardName'],
                'CardType'=> $supplier['CardType'],
                'GroupCode'=> $supplier['GroupCode'],
                'Phone1'=> $supplier['Phone1'],
                'CntctPrsn'=> $supplier['CntctPrsn'],
                'City'=> $supplier['City'],
                'E_Mail'=> $supplier['E_Mail']
                );

            $this->db->insert('suppliers',$data);
            $count++;
    }

    if ($result->num_rows() > 0){
        echo "num_rows : ".$result->num_rows();
        echo "<br>count : $count";
        return true;
    }
    else {
        return false;
    }
}

这是结果(在这里张贴了图片,但我被限制了 2 link,所以我必须粘贴文本)

num_rows : 2827
count : 2827

这里是 phpmyadmin 计数

phpmyadmin

这是 HANA 计数

hana

有人可以告诉我这里发生了什么吗?那是一个倒霉的供应商,可能拿不回他的钱...

作为一种快速调试方法...看来您的其中一行可能导致问题并且未被插入...

要快速测试该情况,您可以对插入执行测试...插入的结果 returns 为 True 或 False。因此,您可以尝试使用它...

替换

$this->db->insert('suppliers',$data);
$count++;

$count++;
if(! $this->db->insert('suppliers',$data)) {
  echo "The insert failed at count = $count <br>"; 
  // instead of the above echo use the var_dump or print_r
  // or use both for fun, but the var_dump is more useful!
  var_dump($data); // This is probably more useful
}

这只是检查插入的结果并采取一些行动。你甚至可以放一个 exit();在这里只是为了找到有问题的行,如果有的话。

是的,还有其他方法可以做到这一点,但这会指出 "might" 哪里出错了。

您还可以执行其他操作,但这是快速 "debug only check" 只是为了让您深入了解可能出现的问题。