如何正确地将 uuid 转换为 BINARY(16)?
How to properly convert uuid to BINARY(16)?
我在 mysql table 中有一个 BINARY(16)
类型的 id 字段。
我生成以下 ID:66e2105c-bff5-4206-a9cc-e212f5622368
使用此代码:
const v = uuidV4Bytes(16);
通过 sequalize 插入的是:
INSERT INTO SPORTS(Id,Name,HouseId,Date,Active)
VALUES ('66e2105c-bff5-4206-a9cc-e212f5622368','SPORTNAME',1, '2020-05-04', 0)
问题:
Error Code: 1406. Data too long for column 'Id' at row
我正在尝试将 uuid 转换为二进制 (16),但显然我得到的值太大了。
我该如何解决?
只要它始终采用 8-4-4-4-12
十六进制字符的形式,您就可以让 MySQL 使用 REPLACE() 和 UNHEX()
为您完成
INSERT INTO SPORTS(Id,Name,HouseId,WDate,Active)
VALUES (UNHEX(REPLACE('66e2105c-bff5-4206-a9cc-e212f5622368','-','')),'SPORTNAME',1, '2020-05-04', 0)
感谢@hanshenrik,我开始寻找在 nodeexpress 中使用 UNHEX 的方法。
我找到了以下内容:
const byteValue = Buffer.from(uuidV4Bytes(16).replace('-', ''), 'hex')
这成功了。但是我不能说这是最佳方式,但它解决了我的问题。
我在 mysql table 中有一个 BINARY(16)
类型的 id 字段。
我生成以下 ID:66e2105c-bff5-4206-a9cc-e212f5622368
使用此代码:
const v = uuidV4Bytes(16);
通过 sequalize 插入的是:
INSERT INTO SPORTS(Id,Name,HouseId,Date,Active)
VALUES ('66e2105c-bff5-4206-a9cc-e212f5622368','SPORTNAME',1, '2020-05-04', 0)
问题:
Error Code: 1406. Data too long for column 'Id' at row
我正在尝试将 uuid 转换为二进制 (16),但显然我得到的值太大了。 我该如何解决?
只要它始终采用 8-4-4-4-12
十六进制字符的形式,您就可以让 MySQL 使用 REPLACE() 和 UNHEX()
INSERT INTO SPORTS(Id,Name,HouseId,WDate,Active)
VALUES (UNHEX(REPLACE('66e2105c-bff5-4206-a9cc-e212f5622368','-','')),'SPORTNAME',1, '2020-05-04', 0)
感谢@hanshenrik,我开始寻找在 nodeexpress 中使用 UNHEX 的方法。
我找到了以下内容:
const byteValue = Buffer.from(uuidV4Bytes(16).replace('-', ''), 'hex')
这成功了。但是我不能说这是最佳方式,但它解决了我的问题。