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

Тема в разделе "Базы данных", создана пользователем nops, 19 фев 2009.

Статус темы:
Закрыта.
Модераторы: latteo
  1. nops

    nops

    Регистр.:
    10 дек 2008
    Сообщения:
    262
    Симпатии:
    7
    У меня совй хостинг на 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, было: "?????????????????"

    Что делать? Что за баг такой?
    Как от этого избавиться?
     
  2. studentpm

    studentpm

    Регистр.:
    8 ноя 2006
    Сообщения:
    184
    Симпатии:
    132
    Какие версии мускулей на 11 и на 14?
     
  3. nops

    nops

    Регистр.:
    10 дек 2008
    Сообщения:
    262
    Симпатии:
    7
    На 11 была 4.0.2 помоему или 4.1.2, ну вообщем 4-я(не помню точно какая именно, но точно 4-я), а на 14 стит 5.0.51
     
  4. upandhigh

    upandhigh

    Регистр.:
    11 фев 2009
    Сообщения:
    235
    Симпатии:
    89
    запусти плиз у себя запрос

    show variables like '%char%';

    и коперни его выдачу сюда
     
  5. nops

    nops

    Регистр.:
    10 дек 2008
    Сообщения:
    262
    Симпатии:
    7
    Код:
    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>
    
     
  6. upandhigh

    upandhigh

    Регистр.:
    11 фев 2009
    Сообщения:
    235
    Симпатии:
    89
    у тя проблема счас что текст в файле СКУЛ находится в формате 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
     
  7. nops

    nops

    Регистр.:
    10 дек 2008
    Сообщения:
    262
    Симпатии:
    7
    Я попробовал, когда делаю 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
     
  8. hidden_4003

    hidden_4003 Создатель

    Регистр.:
    17 авг 2007
    Сообщения:
    16
    Симпатии:
    1
    А если в my.cnf сделать секцию:
    [mysql]
    default-character-set=latin1

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

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

    buddy Писатель

    Регистр.:
    21 фев 2009
    Сообщения:
    7
    Симпатии:
    0
    Попробуй так

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

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

    и в этой же сессии запусти \. путь_к_дампу
     
Статус темы:
Закрыта.