我正在尝试使用产品描述表,而且我有一个令人头疼的问题...... 我有一个方法(php),它查找记录的ID键 如果与搜索条件 不匹配 ,则会尝试创建该行并返回该ID。
现在,SELECT正在返回零行,但是具有相同值的INSERT会引发欺骗错误。
SELECT `id`
FROM (`m3sandbox_product_description`)
WHERE `product_id` = '403466'
AND `company_id` = '5'
AND `value` = 'TERMINAL, FEMALE DISCONNECT, 6.3MM, RED; Connector Type:Female Disconnect; Insulator Color:Red; Termination Method:Crimp; Stud/Tab Size:6.35mm x 0.81mm; Wire Size (AWG):22AWG to 16AWG; Contact Material:Copper; Contact Plating:Tin ;RoHS Compliant: Yes'
LIMIT 1
INSERT INTO `m3sandbox_product_description` (`product_id`, `company_id`, `value`, `datetime_created`)
VALUES ('403466', '5', 'TERMINAL, FEMALE DISCONNECT, 6.3MM, RED; Connector Type:Female Disconnect; Insulator Color:Red; Termination Method:Crimp; Stud/Tab Size:6.35mm x 0.81mm; Wire Size (AWG):22AWG to 16AWG; Contact Material:Copper; Contact Plating:Tin ;RoHS Compliant: Yes', '2012-10-16T15:39:44+00:00')
事实证明,我们公司的其他开发人员使用完全不同的代码库(但类似方法)来对抗同一个数据库,他面临着完全相同的特殊障碍。
是我们应该采取哪些特殊措施来查询说明值,以确保我们的SELECT符合预期?
答案 0 :(得分:1)
重复条目仅由重复的主键触发,与使用的其他值无关。如果product_id是主键(?),那么product_id = 403466是否存在具有不同其他值的记录?
答案 1 :(得分:1)
我找到了!!!!
终端字符串长度
搜索/插入语句的长文本值超出列大小,因此,当搜索该长字符串时 没有 完全匹配,但插入时,字符串的结尾被截断,新的截断字符串 具有完全匹配。
我希望这可以帮助将来的某个人:)