键“PRIMARY”的重复条目“制造商名称-0”
Posted
技术标签:
【中文标题】键“PRIMARY”的重复条目“制造商名称-0”【英文标题】:Duplicate entry 'Manufacturer Name-0' for key 'PRIMARY' 【发布时间】:2021-08-16 01:47:58 【问题描述】:我充其量只是一名中级人员,我们将不胜感激。我正在尝试上传包含药物、制造商、通用名称等数据库的 csv 文件。
我将它用于 .php
$this->db->insert('acc_coa',$manufacturer_coa);
$check_category = $this->db->select('*')->from('product_category')->where('category_name',$insert_csv['category_id'])->get()->row();
if(!empty($check_category))
$category_id = $check_category->category_id;
else
$categorydata=array(
'category_name' => $insert_csv['category_id'],
'status' => 1
);
if ($count > 0)
$this->db->insert('product_category',$categorydata);
这对于数据库:
创建表acc_coa
(
HeadCode
varchar(50) 整理 utf8_unicode_ci 非空,
HeadName
varchar(100) 整理 utf8_unicode_ci NOT NULL AUTO_INCREMENT,
PHeadName
varchar(50) 整理 utf8_unicode_ci 非空,
HeadLevel
int(11) 非空,
IsActive
tinyint(1) 非空,
IsTransaction
tinyint(1) 非空,
customer_id
int(11) 默认为空,
manufacturer_id
int(11) 默认为空,
IsGL
tinyint(1) 非空,
HeadType
char(1) 整理 utf8_unicode_ci 非空,
IsBudget
tinyint(1) 非空,
IsDepreciation
tinyint(1) 非空,
DepreciationRate
十进制(18,2)不为空,
CreateBy
varchar(50) 整理 utf8_unicode_ci 非空,
CreateDate
日期时间不为空,
UpdateBy
varchar(50) 整理 utf8_unicode_ci 非空,
UpdateDate
日期时间不为空,
主键 (HeadName
)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
但任何时候我尝试都会得到这个
错误号:1062
键“PRIMARY”的重复条目“制造商名称-0”
插入acc_coa
(HeadCode
, HeadName
, PHeadName
, HeadLevel
, IsActive
, IsTransaction
, IsGL
, HeadType
, @98765435@@, @98765435@@, @98765435@@, 987654352@,DepreciationRate
,CreateBy
,CreateDate
) 值('502020000001','制造商名称-0','应付帐款','3','1','1','0',' L', '0', 0, '0', '0', '1', '2021-05-27 18:15:47')
文件名:C:/wamp64/www/efkwa/system/database/DB_driver.php
行号:691
【问题讨论】:
表中已存在HeadName = 'Manufacturer Name-0'
的行。您不能使用此值再插入一行。
【参考方案1】:
是否已插入任何行?看起来主键值“制造商名称-0”已经存在。 也许您的插入被执行了两次?
尝试执行
DELETE FROM acc_coa;
然后尝试再次插入。
【讨论】:
【参考方案2】:此错误表明您已经输入了具有该值(制造商名称-0)的示例/行,主键充当每个示例的唯一标识符,因此不能在表的其他示例/行中重复
【讨论】:
【参考方案3】:已经解决了……
我从第 691 行删除了
// Display errors
return $this->display_error(array('Error Number: '.$error['code'], `enter code here`$error['message'], $sql));
但我想知道为什么?
【讨论】:
通常,在真实的编程世界中,删除/压缩错误消息并不能修复错误。 是的,我想通了。不过,我仍在尝试找出原因。 您可以继续阅读:INSERT ... ON DUPLICATE KEY UPDATE Statement,这是要采用的方法【参考方案4】:您可以在 mysql 客户端中执行以下操作:
创建数据并将其插入到临时表或中间表中:
CREATE TABLE acc_coa_tmp AS SELECT * FROM acc_coa WHERE 1 = 0;
注意:新表acc_coa_tmp
上没有主键。
在 PHP 中:
try
:
$db->insert(...);
catch (SqlException $ex)
// Failed insert CSV
// SQL insert into new table acc_coa_tmp
$db->insert(...);
【讨论】:
我试过了,但它在实时服务器上不起作用。以上是关于键“PRIMARY”的重复条目“制造商名称-0”的主要内容,如果未能解决你的问题,请参考以下文章
[23000][1062] 键 'PRIMARY' 的重复条目 '0'
MySQL PHPMyAdmin 错误 #1062 - 键 'PRIMARY' 的重复条目 '0'