如何正确地将 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')

这成功了。但是我不能说这是最佳方式,但它解决了我的问题。