Как да промените SERVER collate (не бази данни, не таблици, а сървъри) на utf8_unicode_ci, PHPClub - клуб
Как да променя сортирането на СЪРВЪР (не база данни, не таблица, а сървър) на utf8_unicode_ci?
Момчета, прекарах деня в мрежата и в мускулите в търсене на решение на моя проблем.
Всичко започна с грешка при извикване на съхранена процедура: „Незаконна комбинация от съпоставки (utf8_unicode_ci,IMPLICIT) и (utf8_general_ci,IMPLICIT)“. В същото време (!ВАЖНО!), данните във всички таблици, както през EMS MySQL Manager, така и през PhpMyAdmin, бяха идеално видими. Търсих, четох, разбрах, че стойностите на три важни променливи са различни:
Освен това във всички таблици и техните колони съпоставянето също беше utf8_unicode_ci.
Не намирайки как да променя collation_server на utf8_unicode_ci в настройките на сървъра, но знаейки как да променя всичко останало, реших да опитам. защото четох, че по принцип това е едно и също нещо, но общият е по-бърз, а уникодът е стандартен. Променен. Получих всички таблици и техните колони в utf8_general_ci, както и три променливи в същия utf8_general_ci:
Извиквам процедура - работи без тази грешка! НО! сега всички резултати, както през EMS MySQL Manager, така и през PhpMyAdmin, се показват в йероглифи! Не разбирам какво не е наред, но предполагам, че е заради точно тези стандарти. Предполагам също, че ако промените ВСИЧКИ по-горе на utf8_unicode_ci, всичко ще работи чудесно.
Оттук и въпросът: КАК да промените collation_server на utf8_unicode_ci? Разбирам, че това може да се постигне с помощта на SET, но как мога да променя това в настройките на сървъра? По принцип има съветник за конфигурация, но там можете да изберете само uft8, не е написано кой, но се оказва общ.
Наистина оценявам вашата помощ момчета..
P.S.: Всички изходни променливи са в utf8, например:
Реши проблема по различен начин.
Открих, че йероглифите са показани поради причината, че данните са въведени в таблицата първоначално в различно кодиране. Тъй като имайки всички променливи в utf8_general_ci, въведох нови данни на български, всичко влезе и се чете нормално, но тези йероглифи останаха. Тези. всичко е наред, просто трябва да презаредите някои данни и всичко работи добре дори с utf8_general_ci. Основното нещо е да зададете SET NAMES utf8, когато работите с базата данни от php.
Така че няма нужда да променяте променливата collation_server.