Java hsqldb脚本文件的唯一约束冲突执行(未读取空格字符)
我正在尝试使用其脚本文件重新创建和读取HSQL数据库。在其中一个表中,我对一对列有一个唯一约束。 某些数据行包含其中一列的重复字段,但结尾有空格。例如:“Java”和“Java”Java hsqldb脚本文件的唯一约束冲突执行(未读取空格字符),java,sql,hsqldb,Java,Sql,Hsqldb,我正在尝试使用其脚本文件重新创建和读取HSQL数据库。在其中一个表中,我对一对列有一个唯一约束。 某些数据行包含其中一列的重复字段,但结尾有空格。例如:“Java”和“Java” 因此,基本上它们形成了两个不同的数据集,但hsql报告了这两个数据集的**完整性约束冲突**错误。 数据库是由使用HSQLDB的应用程序在内部形成的,因此我无法修改脚本文件。(虽然我尝试用unicode字符替换空格字符进行测试,但也没有成功。) 有没有办法告诉HQLDB把空间的文本值看作不同的数据集。br> 注意:
因此,基本上它们形成了两个不同的数据集,但hsql报告了这两个数据集的**完整性约束冲突**错误。
数据库是由使用HSQLDB的应用程序在内部形成的,因此我无法修改脚本文件。(虽然我尝试用unicode字符替换空格字符进行测试,但也没有成功。)
有没有办法告诉HQLDB把空间的文本值看作不同的数据集。br>
注意:我正在使用Java访问和读取hsql数据库,并且我还通过HSQLDB的嵌入式swing GUI管理器测试了脚本文件,结果在两种情况下都是一样的。有两个选项可以解决您的问题:
- 该列声明为CHAR:SGBD将用空格填充trailling空格,因此这两个字符串将相等,您无法更改此值
- 该列声明为VARCHAR:默认情况下,HSQL将使用空格填充最短的字符串,以匹配第二个字符串的大小,然后进行比较。因此,在你的例子中,最后两个字符串是相等的
有两种方法可以解决您的问题:
- 该列声明为CHAR:SGBD将用空格填充trailling空格,因此这两个字符串将相等,您无法更改此值
- 该列声明为VARCHAR:默认情况下,HSQL将使用空格填充最短的字符串,以匹配第二个字符串的大小,然后进行比较。因此,在你的例子中,最后两个字符串是相等的