我有一个MySQL表(简化):
CREATE TABLE `tokens` (
`token` BINARY(16) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
我尝试插入这样的行:
JdbcTemplate jdbcTemplate; // org.springframework.jdbc.core.JdbcTemplate
...
String sql = "INSERT INTO `tokens` (`token`) VALUES (?)";
String token = "123e4567e89b12d3a456426655440000"; // UUID
jdbcTemplate.update(sql, new Object[]{token.getBytes()});
但我得到了这个例外:
Data truncation: Data too long for column 'token' at row 1
我做错了什么?感谢。
编辑:看到我的回答,我错过了十六进制转换(令牌是UUID)。
答案 0 :(得分:0)
以下是存储令牌(即UUID)的解决方案:
jdbcTemplate.update(sql, new Object[]{DatatypeConverter.parseHexBinary(token)});
如果还有其他方法,请告诉我们......