Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Как изменить кодировку для индекса? / 12 сообщений из 12, страница 1 из 1
24.10.2005, 03:26:00
    #33339356
Anton-3000
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как изменить кодировку для индекса?
Здравствуйте. При создании индекса FULLTEXT используется не та кодировка которая мне нужна. Как можно ее поменять на cp1251 ?

Заранее благодарен.
...
Рейтинг: 0 / 0
24.10.2005, 12:12:41
    #33340010
Валентин К
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как изменить кодировку для индекса?
Anton-3000Здравствуйте. При создании индекса FULLTEXT используется не та кодировка которая мне нужна. Как можно ее поменять на cp1251 ?

Заранее благодарен.
Откуда это известно? и какая кодировка поля, по которому делается индекс?
...
Рейтинг: 0 / 0
24.10.2005, 13:42:52
    #33340262
Anton-3000
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как изменить кодировку для индекса?
Это известно из опыта - английские слова ищутся, а русские - нет.

А как узнать кодировку поля, по которому делается индекс?
...
Рейтинг: 0 / 0
25.10.2005, 01:30:30
    #33341440
ultrabyte
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как изменить кодировку для индекса?
collate cp1251_general_ci при создании поля по которому строиться Index
и еще
если в Мускле кодировка по умолчанию не cp1251_general_ci

set character_set_client='cp1251';
set character_set_results='cp1251';
set collation_connection='cp1251_general_ci';

После сего ищет без проблем
...
Рейтинг: 0 / 0
25.10.2005, 13:14:59
    #33342386
Anton-3000
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как изменить кодировку для индекса?
ultrabyte, спасибо за ответ. У меня тут возник еще один вопрос: дело в том, что поля по которым я хочу создать индекс FULLTEXT нормально воспринимают русские символы, я боюсь, что если я поменяю их кодировку, то данные в этих полях будут испорчены...

А можно ли изменить кодировку поля, если у меня уже есть БД, таблицы и поля, а в них уже много записей? Не попортит ли это данные?
...
Рейтинг: 0 / 0
25.10.2005, 14:07:22
    #33342589
Welly
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как изменить кодировку для индекса?
А можно ли изменить кодировку поля, если у меня уже есть БД, таблицы и поля, а в них уже много записей? Не попортит ли это данные?
Может испортить, особенно, если вы преобразование между разнобайтовыми кодировками. В общем, нужно делать в два этапа - сконвертить вначале в независимую кодировку типа binary или utf8, а потом далее в нужную. Попробуйте вначале на тестовой копии, какой из способов вам больше подходит.
...
Рейтинг: 0 / 0
25.10.2005, 14:08:29
    #33342593
Welly
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как изменить кодировку для индекса?
set character_set_client='cp1251';
set character_set_results='cp1251';
set collation_connection='cp1251_general_ci';

Достаточно
Код: plaintext
1.
SET NAMES 'cp1251'
...
Рейтинг: 0 / 0
25.10.2005, 22:10:43
    #33343754
ultrabyte
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как изменить кодировку для индекса?
Попортит однозначно поэтому Welly правильно сказал
либо в два этапа либо создай темповую таблицу с полями в кодировке 1251
и потом в неё данные перенеси.
...
Рейтинг: 0 / 0
25.10.2005, 22:15:18
    #33343757
ultrabyte
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как изменить кодировку для индекса?
Welly set character_set_client='cp1251';
set character_set_results='cp1251';
set collation_connection='cp1251_general_ci';

Достаточно
Код: plaintext
1.
SET NAMES 'cp1251'



Если просто с с Муслом работаешь достаточно.

а если к нему через клиента обращаешь PHP или C например
то клиента надо указывать
set character_set_client='cp1251';
set character_set_results='cp1251';

притом в самом клиенте после соединения с базой.
...
Рейтинг: 0 / 0
26.10.2005, 01:57:21
    #33343902
Anton-3000
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как изменить кодировку для индекса?
Ура! Все работает. Без вашей помощи не разобрался бы. Всем спасибо. Мне просто нужно было добавить следующие строки:

Код: plaintext
1.
2.
mysql_query ("set character_set_client='cp1251'");
mysql_query ("set character_set_results='cp1251'");
mysql_query ("set collation_connection='cp1251_general_ci'");
...
Рейтинг: 0 / 0
26.10.2005, 10:00:58
    #33344177
Welly
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как изменить кодировку для индекса?
Если просто с с Муслом работаешь достаточно.

а если к нему через клиента обращаешь PHP или C например

Так любое приложение, которое цепляется к MySQL - это и есть клиент ;) Пишу на Delphi (через libmysql.dll, никаких отличий от кода на C), SET NAMES оказывается достаточно.
...
Рейтинг: 0 / 0
26.10.2005, 10:03:02
    #33344181
Welly
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как изменить кодировку для индекса?
А вот что говорит MySQL Reference

NAMES {'charset_name' | DEFAULT}

SET NAMES sets the three session system variables character_set_client, character_set_connection, and character_set_results to the given character set. Setting character_set_connection to charset_name also sets collation_connection to the default collation for charset_name.
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Как изменить кодировку для индекса? / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]