Java 在mysql数据库表中存储UUID
在将UUID存储到mysql表时,我面临一个特殊的问题。 我有一个带有列声明的表:Java 在mysql数据库表中存储UUID,java,mysql,jdbc,uuid,Java,Mysql,Jdbc,Uuid,在将UUID存储到mysql表时,我面临一个特殊的问题。 我有一个带有列声明的表: expenseUUID varchar(32) primary key , 在本专栏中,我希望保存UUID。我已生成UUID,如下所示: String expenseUUID = UUID.randomUUID().toString(); expenseUUID.replaceAll("-", ""); 但是,当我尝试使用JDBC插入expenseUUID时,我得到一个错误,它说: Data
expenseUUID varchar(32) primary key ,
在本专栏中,我希望保存UUID。我已生成UUID,如下所示:
String expenseUUID = UUID.randomUUID().toString();
expenseUUID.replaceAll("-", "");
但是,当我尝试使用JDBC插入expenseUUID时,我得到一个错误,它说:
Data truncation: Data too long for column 'expenseUUID'
我应该如何解决此问题?我被卡住了。我无法找出哪里出了问题。您刚刚错过了将
replaceAll
结果重新分配到expenseUUID
变量。然后您的变量仍然包含36个字符的字符串
当前:
String expenseUUID = UUID.randomUUID().toString();
expenseUUID.replaceAll("-", "");
System.out.print(expenseUUID); // 9e73f8a4-dfde-438e-9eec-ac4e94817b6b
更正:
String expenseUUID = UUID.randomUUID().toString();
expenseUUID = expenseUUID.replaceAll("-", "");
System.out.print(expenseUUID); // 0757c2666e934e2eb303df68bb3c9761
expenseUUID varchar(32)主键,是否检查了expenseUUID的长度?是的,将其设置为varchar(64)并在插入后查看其长度是否为32个字符好的。。。我将尝试使用sameIMHO,这就是OP执行expenseUUID.replaceAll(“-”,”)的原因代码>@Andreas是的,我完全错过了。无论如何,
replaceAll
并不完全正确。对:)结果的缺失赋值是我完全缺失的,我测试了代码,但直觉上在我的测试用例中分配了结果。。。