无法在 HSQLDB 中设置 md5 密码:找不到例程签名



HSQLDB中关于MD5的文档有些稀缺,但是我已经按照这些说明来启用md5-ing我的密码:

CREATE FUNCTION md5(VARBINARY(128))
RETURNS VARBINARY(226)
LANGUAGE JAVA
DETERMINISTIC
NO SQL
EXTERNAL NAME 'CLASSPATH:org.hsqldb.lib.MD5.digest'

现在,当我尝试更新密码时:

UPDATE worker SET password = md5('pass123') WHERE wid=1

我收到以下错误:

java.sql.SQLException: routine signature not found for: PUBLIC.MD5(CHARACTER)

我对sql不是很熟悉,所以我不确定我在哪里犯了错误。

您需要一个带有字符串而不是二进制的函数签名。

CREATE FUNCTION md5(VARCHAR(128), VARCHAR(10))
RETURNS VARCHAR(256)
LANGUAGE JAVA
DETERMINISTIC
NO SQL
EXTERNAL NAME 'CLASSPATH:org.hsqldb.lib.MD5.encode'

并使用固定的编码参数调用该函数:

UPDATE worker SET password = md5('pass123', 'ISO-8859-1') WHERE wid=1

最新更新