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" 只是为了让您深入了解可能出现的问题。
我从 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" 只是为了让您深入了解可能出现的问题。