INSERT INTO `table` (`id`, `uuid`) VALUES (1, 'b311bf28-4a12-4dd1-94b6-a3d6f964a6f8'),(2, 'b311bf28-4a12-4dd1-94b6-a3d6f964a6f8'),(3, 'b311bf28-4a12-4dd1-94b6-a3d6f964a6f8');
造成这个问题的根本原因是在批量插入的时候,使用了相同的uuid进行插入。解决这个问题的方法有两种:
1. 在插入之前先判断uuid是否已经存在于数据库中,如果存在则重新生成uuid。
INSERT INTO `table` (`id`, `uuid`) VALUES (1, IF((SELECT COUNT(`id`) FROM `table` WHERE `uuid`='b311bf28-4a12-4dd1-94b6-a3d6f964a6f8')>0, UUID(), 'b311bf28-4a12-4dd1-94b6-a3d6f964a6f8')), (2, IF((SELECT COUNT(`id`) FROM `table` WHERE `uuid`='b311bf28-4a12-4dd1-94b6-a3d6f964a6f8')>0, UUID(), 'b311bf28-4a12-4dd1-94b6-a3d6f964a6f8')), (3, IF((SELECT COUNT(`id`) FROM `table` WHERE `uuid`='b311bf28-4a12-4dd1-94b6-a3d6f964a6f8')>0, UUID(), 'b311bf28-4a12-4dd1-94b6-a3d6f964a6f8'));
2. 在MySQL中使用UUID_SHORT()函数来生成uuid,这个函数生成的uuid是64位的,不会重复。使用这个函数需要注意,因为uuid_short是随机生成的,所以在多次生成的时候也有可能会重复。
INSERT INTO `table` (`id`, `uuid`) VALUES (1, UUID_SHORT()),(2, UUID_SHORT()),(3, UUID_SHORT());
总之,在使用MySQL批量插入uuid的时候,应该注意保证uuid的唯一性,避免重复插入相同的uuid。以上两种方法可以帮助解决这个问题,选择哪种方法需要根据具体情况进行取舍。