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 a utf8 string of five hexadecimal numbers in aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee format:

從官方文檔可以看出,UUID()函數返回的UUID的長度為36

錯誤解決

  1. 修改user表中id字段的限定長度
  2. 修改UUID()函數的返回值

使用REPLACE()函數,把UUID()函數返回值中的 “-”符號替換掉:

REPLACE( UUID(),"-","")

這樣可以將UUID()函數產生的UUID的長度縮短到32,且UUID的唯一性並不會被破壞。


官方文檔:https://dev.mysql.com/doc/refman/8.0/en/miscellaneous-functions.html#function_uuid


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM