mysql - 检查 UNIQUE CONSTRAINT 时是否会截断值?
问题描述
MySQL 5.7 版
我们的应用程序面临一个奇怪的问题。我们有一个保存地址的地址表。我们从Google Place API中获取它们,因此我们还保存了Google Place ID,这是 Google 的地点(也是地址)的唯一标识符。
这个 Google Place ID 可能很长,例如:EicxMyBNYXJrZXQgU3QsIFdpbG1pbmd0b24sIE5DIDI4NDAxLCBVU0EiGhIYChQKEgnRTo6ixx-qiRHo_bbmkCm7ZRAN
所以这是问题/异常:
An exception occurred while executing 'INSERT INTO address (uuid, house_no, external_identifier, created_at, updated_at, updated_by, street_uuid) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)' with params ["\x11\xeb\x9f\x62\x13\x5a\x89\x38\x81\x67\x1a\x01\xce\x9f\xe3\x65", "unknown", "EjpKdXN0dXMtTGllYmlnLVN0cmHDn2UsIDk1NDQ3IEJheXJldXRoLCBCYXllcm4sIERldXRzY2hsYW5kIi4qLAoUChIJh7MuLzW9oUcRH2HnYygz6YYSFAoSCTHQM6Q4vaFHEYAX0B4stx0c", "2021-04-17 11:48:34", null, null, "\x11\xeb\x9f\x62\x12\xd4\x2a\x8c\x9b\x2e\x1a\x01\xce\x9f\xe3\x65"]:
SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry 'EjpKdXN0dXMtTGllYmlnLVN0cmHDn2UsIDk1NDQ3IEJheXJldXRoLCBCYXllcm4s' for key 'UNIQ_667113G26DD00CB8'
如果您注意到,我们尝试在此处保存的值是:EjpKdXN0dXMtTGllYmlnLVN0cmHDn2UsIDk1NDQ3IEJheXJldXRoLCBCYXllcm4sIERldXRzY2hsYW5kIi4qLAoUChIJh7MuLzW9oUcRH2HnYygz6YYSFAoSCTHQM6Q4vaFHEYAX0B4stx0c
但例外只是提到我们要保存在数据库中的 Google Place ID 的前 64 个字符:EjpKdXN0dXMtTGllYmlnLVN0cmHDn2UsIDk1NDQ3IEJheXJldXRoLCBCYXllcm4s
所以我的问题...... MySQL 在检查 UNIQUE CONSTRAINS 时是否只比较有限数量的字符?
解决方案
推荐阅读
- reactjs - 在反应钩子中复制数组状态
- html - display: flex 和 padding 不起作用,还有其他方法可以调整侧边栏的内容吗?
- android - Jetpack 组合屏幕截图
- r - R中shinyapp的st_read路径
- python - 为什么神经网络会出错,认为所有图像都属于同一类?
- javascript - 需要以角度将对象数组从形式转换为另一个
- r - 如何根据 R 中的日期获取标准的计数表
- semantic-versioning - 如果我引入非向前兼容的更改,我应该增加主要版本吗
- vb.net - 从文件夹显示图像到水晶报表 Vb.net
- browser - Web 应用程序是否需要浏览器扩展来跨选项卡保留快捷方式?