Это не ошибка функции uuid ()
Неожиданный результат получился, потому что неявное преобразование произошло, когда ваш клиент charset и результат charset не utf8;
1 Вывод uuid () - utf8, независимо от того, какая у вас кодировка;
2, когда ваш клиент charset и результат charset имеют более высокий приоритет, чем utf8, такой как utf8mb4, тогда происходит неявное преобразование, другие кодировки с более низким приоритетом, такие как latin1, работают нормально;
3 Неявное преобразование превратит uuid () в постоянную строку перед выполнением sql, поэтому после завершения выполнения sql тот же uuid () вернет
вы можете увидеть все эти события, используя объяснение extended + ваше предложение, а затем используя show warnings;
как решить?
1 поворот неявного преобразования в явное преобразование
например :
установить имена utf8mb4;
заменить (преобразовать (uuid (), используя utf8mb4), '-', '')
или
установить имена utf8mb4;
заменить (uuid (), _ utf8 '-', _ utf8 '')
2 aviod неявное преобразование
например: установить имена utf8
введите описание ссылки здесь