Tengo un campo de identificación de tipo BINARY(16) en una tabla mysql.
Genero el siguiente id: 66e2105c-bff5-4206-a9cc-e212f5622368
Con este código:
const v = uuidV4Bytes(16);La inserción a través de sequalize es:
INSERT INTO SPORTS(Id,Name,HouseId,Date,Active) VALUES ('66e2105c-bff5-4206-a9cc-e212f5622368','SPORTNAME',1, '2020-05-04', 0)Problema:
Error Code: 1406. Data too long for column 'Id' at rowEstoy tratando de convertir un uuid en binario (16), pero aparentemente obtengo un valor demasiado grande. ¿Cómo puedo solucionar esto?
Gracias a @hanshenrik comencé a buscar una forma de usar UNHEX en nodeexpress.
Encontré lo siguiente:
const byteValue = Buffer.from(uuidV4Bytes(16).replace('-', ''), 'hex')Esto hizo el truco. Sin embargo, no puedo decir que esta sea la forma más óptima, pero resolvió mi problema.
siempre que tenga la forma 8-4-4-4-12 caracteres hexadecimales, puede hacer que MySQL lo haga por usted con REPLACE() y UNHEX()
INSERT INTO SPORTS(Id,Name,HouseId,WDate,Active) VALUES (UNHEX(REPLACE('66e2105c-bff5-4206-a9cc-e212f5622368','-','')),'SPORTNAME',1, '2020-05-04', 0)