|
|
|
| Ребят, провёл день в нете и в мускуле в поисках решения моей проблемы.
Началось всё с ошибки при вызове храномой процедуры: "Illegal mix of collations (utf8_unicode_ci,IMPLICIT) and (utf8_general_ci,IMPLICIT)".
При этом(!ВАЖНО!), данные во всех таблицах, что через EMS MySQL Manager, что через PhpMyAdmin были видны отлично. Поискал, почитал, разобрался, что значения трёх важных переменных отличны:
collation_connection: utf8_unicode_ci
collation_database: utf8_unicode_ci
collation_server: utf8_general_ci
|
К тому же во всех таблицах и их столбцах collate стоял так же utf8_unicode_ci.
Не найдя как в настройках сервера изменить collation_server на utf8_unicode_ci, но зная как поменять всё остальное, я решил попробовать. потому что прочитал, что в принципе, это одно и то же, но general быстрее, а unicode - по стандарту. Изменил. Получил все таблицы и их столбцы в utf8_general_ci, а так же три переменные в той же utf8_general_ci:
collation_connection: utf8_general_ci
collation_database: utf8_general_ci
collation_server: utf8_general_ci
|
Вызываю процедуру - работает без этой ошибки, !НО! теперь все результаты, что через EMS MySQL Manager, что через PhpMyAdmin, показываются иероглифами! Я не понимаю, в чём дело, но предполагаю, что это из-за тех самых стандартов. Так же предполагаю, что если изменить ВСЁ вышеописанное в utf8_unicode_ci, всё будет замечательно работать.
Отсюда вопрос: КАК изменить collation_server на utf8_unicode_ci? Я понимаю, что с помощью SET этого можно добиться, но а как поменять это в установках сервака? Есть, в принципе, конфигурационный визард, но там можно выбрать лишь uft8, не написано какую, а получается general.
ОЧЕНЬ надеюсь на вашу помощь, ребят..
Пасибо заранее.
P.S.: Все переменные вывода стоят в utf8, к примеру:
character_set_client utf8
character_set_connection utf8
character_set_database utf8
character_set_results utf8
character_set_server utf8
character_set_system utf8
|
P.P.S.: Я реально искал по форумам, а так же по всему нету, гуглом... Не думайте, что я просто так сюда написал, не попытавшись решить проблему самостоятельно... | |
|
|
|
|
|
|
|
для: J-Pro
(27.10.2006 в 01:35)
| | Погодите, а данные в таблицах у вас в какой кодировке, просто поменять кодировки соединения и таблиц не получится, нужно после того, как они были изменены заполнить таблицы по новой. У вас как выглядит хранимая процедура - может проще в ней преобразовать кодировку при помощи конструкции
_utf8'строка' COLLATE utf8_general_ci
|
| |
|
|
|