Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在mysql数据库表中存储UUID_Java_Mysql_Jdbc_Uuid - Fatal编程技术网

Java 在mysql数据库表中存储UUID

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

在将UUID存储到mysql表时,我面临一个特殊的问题。 我有一个带有列声明的表:

    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
并不完全正确。对:)结果的缺失赋值是我完全缺失的,我测试了代码,但直觉上在我的测试用例中分配了结果。。。