RuWeb.net Forum

MySQL
slik - 8.6.2006 в 12:59

MySQL и русская кодировка WINDOWS-1251

При восстановлении бекапа mysql все русские символы меняются на '?'

1. Убедитесь, что сопоставление кодировки для уже созданной БД по-умолчанию - cp1251.

Посмотреть/исправить это можно через phpyadmin, или в файле /var/db/mysql/имябазы/db.opt


2. Настройте mysql на принудительный выбор кодировки cp1251.

В /etc/my.cnf внестите следующие строки:

[client]
default-character-set=cp1251

[mysqld]
default-character-set=cp1251
default-collation=cp1251_general_ci
init-connect="SET NAMES cp1251"
skip-character-set-client-handshake


После этого перезапустите сервер MySQL
# /usr/local/etc/rc.d/mysql-server restart

или просто перезагрузите VDS
# reboot

Этого достаточно, чтоб MySQL работал с windows 1251 кодировкой по умолчанию.
После этого заливайте дампы - ????? не будет.

P.S. Если же при импорте базы данных вместо русских букв выдаются иероглифы или знаки вопроса,
это значит что дамп был сделан в кодировке отличной от cp1251.
Переделайте дамп в cp1251 или перекодируйте его в нужную кодировку
с помощью утилит iconv или recode.






Забыл пароль root на mysql, как его сменить?


/usr/local/etc/rc.d/mysql-server stop
mysqld_safe '''--skip-grant-tables''' &
mysql
USE mysql;
UPDATE user SET Password=PASSWORD( 'новый_пароль' ) WHERE User='root';
FLUSH PRIVILEGES;
quit;
killall mysqld
/usr/local/etc/rc.d/mysql-server start


- Если у вас включен мониторинг сервиса mysql, то между 1 и 2 шагом не мешкаем, а то ispmgr поднимет его сам. В этом случае повторяем с п.1.

- Не забываем прописать новый пароль в /usr/local/ispmgr/etc/ispmgr.conf, после чего перезапускаем ISPmanager - killall ispmgr

[Изменено 9.9.2006 от slik]


psylosss - 9.8.2006 в 23:54

Сделал все, как написано в инструкции. Вставляю записи РНР-скриптом: вставляются знаки вопроса.
Что делать?


support - 10.8.2006 в 08:10

Проверить кодировки базы, таблиц, сервера.


psylosss - 10.8.2006 в 09:14

Все это корректно. Когда заливаю дамп, все хорошо. Когда вставляю скриптом, кодировка съезжает.


kpv - 10.8.2006 в 11:54

где ваш скрипт?
какие данные вставляете?
мы, к сожалению (а некоторые и к счастью), телепатическими способностями не обладаем.


psylosss - 10.8.2006 в 16:40

Обсуждение с суппортом проблемы перенесли в аську. Проблема пока не решена. О причинах и решении напишу здесь позднее.


YoSite - 27.8.2006 в 11:50

Привет пипл. Была такая же проблема, решение нашлось довольно таки быстро. Итак

1) В файле бд исправляем всю кодировку на utf8(пишется именно так без дефиса), заменяем то есть все DEFAULT CHARSET=cp1251 на DEFAULT CHARSET=utf8
2)переносим бд с коллэйшеном на utf8_general_ci
3)после каждого запроса на коннект к бд, то есть после mysql_connect() сразу прописываем mysql_query("SET NAMES cp1251"); mysql_query("COLLATE 'utf8'")
т.е например строка с коннектом выглядела так:
.....$this->conn = mysql_connect($this->server,$this->user);
после выглядит так:
$this->conn = mysql_connect($this->server,$this->user); mysql_query("SET NAMES cp1251"); mysql_query("COLLATE 'utf8'
");

Если всё сделаете правельно 100% будет работать. Удачи

________________
YoSite TeaM

[Изменено 27.8.2006 от YoSite]