我正在使用一个h2数据库来运行我的测试,在测试之前我需要在数据库中插入一些默认值。我正试图为此编写一个sql脚本,但是,在将uuid作为值插入相关表时遇到了问题。
我尝试插入uuid,如下所示;然而,insert into user_profile_table (profile_id, user_id) values (1, 'c80d54d3-500d-4539-9479-8e8961477193');
收到一个JdbcSQLDataException错误,声明:列的值太长。
我认为这是因为user_id列类型是BINARY(16(,所以我决定尝试以下查询insert into user_profile_table (profile_id, userkeycloak_id) values (1, UNHEX(REPLACE('c80d54d3-500d-4539-9479-8e8961477193', '-','')));
,但是,然后我得到一个错误:JdbcSQLSyntaxErrorException:Function"UNHEX";未找到;SQL语句。我在网上看到h2数据库不支持unxx功能。我试图寻找其他方法来将uuid转换为与h2数据库兼容的格式,但一直未能找到可行的解决方案。
因此,我的问题是:有没有任何查询可以用来将uuid(以BINARY(16((格式插入到h2db表中?如有任何建议,我们将不胜感激。
要在BINARY(16)
列中插入UUID值,可以在MySQL和H2:中使用标准二进制字符串文字
insert into user_profile_table (profile_id, user_id)
values (1, X'c80d54d3500d453994798e8961477193');
试试微软的这个解决方案:https://learn.microsoft.com/en-us/sql/t-sql/data-types/uniqueidentifier-transact-sql?view=sql-服务器-ver16