Як змінити collate СЕРВЕРУ (не бази, не таблиці, а серверу) на utf8_unicode_ci, PHPClub - клуб
Як змінити collate СЕРВЕРУ(не бази, не таблиці, а сервера) на utf8_unicode_ci?
Дітлахів, провів день у неті і в м'язах у пошуках вирішення моєї проблеми.
Почалося все з помилки при викликі процедури, що зберігається: "Illegal mix of collations (utf8_unicode_ci,IMPLICIT) and (utf8_general_ci,IMPLICIT)". При цьому(!ВАЖЛИВО!), дані у всіх таблицях, що через EMS MySQL Manager, що через PhpMyAdmin були видно відмінно. Пошукав, почитав, розібрався, що значення трьох важливих змінних відмінні:
До того ж у всіх таблицях та їх стовпцях collate стояв так само utf8_unicode_ci.
Не знайшовши як у налаштуваннях сервера змінити collation_server на utf8_unicode_ci, але знаючи як змінити все інше, я вирішив спробувати. тому що прочитав, що в принципі, це одне й те саме, але general швидше, а unicode - за стандартом. Змінив. Отримав усі таблиці та їх стовпці в utf8_general_ci, а також три змінні в тій же utf8_general_ci:
Викликаю процедуру - працює без цієї помилки, ! тепер всі результати, що через EMS MySQL Manager, що через PhpMyAdmin, є ієрогліфами! Я не розумію, в чому справа, але припускаю, що це через ті самі стандарти. Так само припускаю, якщо змінити ВСЕ вищеописане в utf8_unicode_ci, все буде чудово працювати.
Звідси питання: ЯК змінити collation_server на utf8_unicode_ci? Я розумію, що за допомогою SET цього можна досягти, але як змінити це в установках сервака? Є, в принципі, конфігураційний візард, але там можна вибрати лише uft8, не написано яку, а виходить general.
ДУЖЕ сподіваюся на вашу допомогу, хлопців.
PS: Всі змінні висновки стоять у utf8, наприклад:
Вирішив проблему іншим шляхом.
З'ясував, що ієрогліфи показувалися тому, що дані були занесені в таблицю в іншому кодуванні спочатку. Оскільки маючи всі змінні в utf8_general_ci, я заніс нові дані українською мовою, все занеслося і прочиталося нормально, а ті ієрогліфи залишилися. Тобто. все ок просто треба перезанести деякі дані і все відмінно працює навіть з utf8_general_ci. Головне, під час роботи з БД з php встановлювати SET NAMES utf8.
Отже, необхідність зміни змінної collation_server відпадає.