MySQL uuid()函数生成的UUID的长度问题
MySQL uuid()函數生成的UUID的長度問題
錯誤重新
有一user表,表結構信息如下:
現在嘗試執行以下SQL語句,向user表插入一條數據:
INSERT INTO `user` VALUES ( UUID(),"肖zy",22 )
上述SQL語句執行時產生以下錯誤信息:
INSERT INTO `user` VALUES ( UUID(),"肖zy",22 )
> 1406 - Data too long for column 'id' at row 1
> 時間: 0s
錯誤分析
從錯誤信息看,我們插入id字段的數據太長了。user表中id字段的最大長度被設置為32,也就是說UUID()函數返回的UUID的長度超過32。
下面是官方文檔中關于UUID()函數的一段說明:
UUID()returns a value that conforms to UUID version 1 as described in RFC 4122. The value is a 128-bit number represented as autf8string of five hexadecimal numbers inaaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeeeformat:
從官方文檔可以看出,UUID()函數返回的UUID的長度為36。
錯誤解決
修改user表中id字段的限定長度
修改UUID()函數的返回值
使用REPLACE()函數,把UUID()函數返回值中的 “-”符號替換掉:
REPLACE( UUID(),"-","")這樣可以將UUID()函數產生的UUID的長度縮短到32,且UUID的唯一性并不會被破壞。
官方文檔:https://dev.mysql.com/doc/refman/8.0/en/miscellaneous-functions.html
總結
以上是生活随笔為你收集整理的MySQL uuid()函数生成的UUID的长度问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一个关于WCF调用远程链接返回405错误
- 下一篇: 使用golang开发mqtt服务压力测试