проблема ч MySQL на своём хостинге

Статус
В этой теме нельзя размещать новые ответы.

nops

Участник
Регистрация
10 Дек 2008
Сообщения
265
Реакции
8
У меня совй хостинг на ASPLinux 11. Точнее сначала на ASPLinux 11, сейчас на ASPLinux 14. Суть проблемы такова.
на 11-м мускуль установился по умолчанию с UTF8 кодировкой, потом переустановил на 14-й, так же поставил мускул из дистрибутива. Стал заливать базы сайтов. Вот тут и начались проблемы. Все сайты залились правильно, а вот сайт на движке NetCat стал показывать: "��������". Заливал дампы баз с кодировкой utf8.
Открываю phpmyadmin, смотрю, а все базы в кодировке latin1. думаю хренова. Открываю сонфигурационный файл MySQL - my.cnf и там прописываю: "default_character_set=utf8" назначил кодировку по умолчанию. Заливаю базы по новой, на этот раз через phpmyadmin(первый раз заливал через прогу MySQL Administartor). Залилось, кодировка установилась везде UTF8, только на NetCat cp1251 почему-то. стираю базу, меняю сравнение, один чёрт.
Вручную меняю в файле дампа "cp1251" на "utf8", заливаю, ошибка.
Да, когда я заливал в utf8 у меня вместо текста было: "��������", а когда в ср1251, было: "?????????????????"

Что делать? Что за баг такой?
Как от этого избавиться?
 
Какие версии мускулей на 11 и на 14?
 
запусти плиз у себя запрос

show variables like '%char%';

и коперни его выдачу сюда
 
запусти плиз у себя запрос

show variables like '%char%';

и коперни его выдачу сюда
Код:
mysql> show variables like '%char%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | utf8                       |
| character_set_filesystem | binary                     |
| character_set_results    | utf8                       |
| character_set_server     | utf8                       |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)

mysql>
 
у тя проблема счас что текст в файле СКУЛ находится в формате CP1251 а База данных думает что ты ей пихаешь ЮТФ8 отсюа и вопросики. короче вначлае делаешь как делал т.е. меняешь кодировку в дампе на ЮТФ8 просто строчку одну в КРИТ стэйтменте. еще глянь не выставляется ли там кодировка в другом месте типа СЕТ ЧАРСЕТ если выставляется тоже замени на ЮТФ8 вобщем в дампе не должно быть ЦП1251 вобще. далее сам файл тебе нада конвертнуть в ЮТФ8, делается в линуксе это например так:
iconv --from-code=WINDOWS-1251 --to-code=UTF-8 dump.sql > utf8.sql

сравни размеры после конвертирования, новый файл должен раза в два больше занимать места. после конверта ну и дальше импортируешь как обычно:
mysql -u username -p database < utf8.sql
 
у тя проблема счас что текст в файле СКУЛ находится в формате CP1251 а База данных думает что ты ей пихаешь ЮТФ8 отсюа и вопросики. короче вначлае делаешь как делал т.е. меняешь кодировку в дампе на ЮТФ8 просто строчку одну в КРИТ стэйтменте. еще глянь не выставляется ли там кодировка в другом месте типа СЕТ ЧАРСЕТ если выставляется тоже замени на ЮТФ8 вобщем в дампе не должно быть ЦП1251 вобще. далее сам файл тебе нада конвертнуть в ЮТФ8, делается в линуксе это например так:
iconv --from-code=WINDOWS-1251 --to-code=UTF-8 dump.sql > utf8.sql

сравни размеры после конвертирования, новый файл должен раза в два больше занимать места. после конверта ну и дальше импортируешь как обычно:
mysql -u username -p database < utf8.sql
Я попробовал, когда делаю ICONV происходит следующее
Код:
[root@hosting novour_com 20090206 1948]# iconv -f cp1251 -t UTF8 utf8.sql > utf8_1.sql
iconv: недопустимая входная последовательность в позиции 42376
[root@hosting novour_com 20090206 1948]#
Кодировку меняю так:
Код:
sed -r 's/latin1/utf8/g' dbname.sql > dbname_utf.sql
Но пробовал и ручками поменять все cp1251 на utf8
 
А если в my.cnf сделать секцию:
[mysql]
default-character-set=latin1

или какой там был на 4-ке заимпортировать и поменять назад на utf8.

Хотя то что iconv ругается показывает что сам дамп вероятно смешанный.
Как вариант сделать 2 файла в одном только 1251 таблицы тогда iconv сконвертирует без проблем.
 
Попробуй так

на старом сервере проверь кодировку
show variables like '%char%';
соответственно дамп будет в этой кодировке

на новом сервере перед заливкой установи кодировку в которой дамп
например SET NAMES latin1;

и в этой же сессии запусти \. путь_к_дампу
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху