Страница 1 из 1

слетели кодировки баз

Добавлено: 2008-01-13 14:31:10
-=Ded=-
8 часов мучаюсь и ни как не могу вернуть кодировки двум базам :(
одна была utf-8, вторая - cp-1251
небольшая предыстория...
никак не устанавливалась одна cms пока в мускуле не прописал принудительно

Код: Выделить всё

[client]
#password	= your_password
port		= 3306
socket		= /tmp/mysql.sock
[b]default-character-set=cp1251
character-sets-dir=/usr/local/share/mysql/charsets/[/b]
и

Код: Выделить всё

[mysqld]
port		= 3306
socket		= /tmp/mysql.sock
[b]character-sets-dir=/usr/local/share/mysql/charsets/
default-character-set=cp1251
skip-character-set-client-handshake[/b]
все базы работают из под рута,
mysql-server-4.1.22
mysql-client-4.1.22 (а в phpinfo пишет Client API version - 3.23.49)
мускуль из портов, пхп и апач из бинарников.

вообщем поменял из phpMyAdmin на те что должны быть, а эффекта 0,
как были "???" , так и остались,
третья база - все в порядке.
что делать даже не знаю, уже и закоментировал в конфиге все, что добавлял, но толку никакого.

Re: слетели кодировки баз

Добавлено: 2008-01-13 18:30:31
Alex Keda
апач перезапустит?

Re: слетели кодировки баз

Добавлено: 2008-01-14 0:13:34
-=Ded=-
не помогло

Re: слетели кодировки баз

Добавлено: 2008-01-14 9:15:49
kmb
посмотри в гугле, пару раз возникали такие проблемы, в настройках мускула нужно было что-то прописать связанное с кодировками, щас не вспомню...

Re: слетели кодировки баз

Добавлено: 2008-01-14 13:50:15
zg
-=Ded=- писал(а):вообщем поменял из phpMyAdmin на те что должны быть, а эффекта 0,
это ты как :shock: ? там можно менять кодировку только на соединение для PMA :wink:
-=Ded=- писал(а):как были "???" , так и остались,
третья база - все в порядке.
что делать даже не знаю, уже и закоментировал в конфиге все, что добавлял, но толку никакого.
можно конфиг не трогать, так как если особой нужды нет, то проще выставить кодировку на соединение http://forum.fatal.ru/viewtopic.php?p=55811#p55811

Код: Выделить всё

<?
// Соединение с базой данных
mysql_connect('localhost', 'root') || die ('MySQL ERROR: Can\'t connect to localhost');

// Настройки соединения
my_query('USE zg');
my_query( 'set character_set_client=51' ); // windows-1251
my_query( 'set character_set_results=51' );
my_query( 'set character_set_connection=51' );
...
это и проще и надёжней :)

Re: слетели кодировки баз

Добавлено: 2008-01-14 14:45:52
-=Ded=-
это ты как :shock: ? там можно менять кодировку только на соединение для PMA :wink:
ну это я и имел ввиду, записи сами по себе как я предпологаю кодировку сменить не могут, они не трогались больше чем пол-года.
прописывать в конфиг пришлось из-за особенности мускуля при работе от рута, все кодировки игнорируются (не помню где это вычитал, возможно даже на этом форуме линк был)

попытался сделать как написано тут
http://forum.lissyara.su/viewtopic.php?p=22815#p22815
только с cp1251 , так дамп тоже получился с ????.

Re: слетели кодировки баз

Добавлено: 2008-01-14 15:54:14
hizel
http://dev.mysql.com/doc/refman/5.0/en/ ... abase.html
поможет

например

Код: Выделить всё

ALTER DATABASE [db_name] CHARACTER SET UTF-8 

Re: слетели кодировки баз

Добавлено: 2008-01-14 18:30:43
-=Ded=-
hizel писал(а):http://dev.mysql.com/doc/refman/5.0/en/ ... abase.html
поможет

например

Код: Выделить всё

ALTER DATABASE [db_name] CHARACTER SET UTF-8 
тоже не помогло :(

зы все слетевшие в базах кодировки стали latin1_swedish_ci (1252).
прописал для всех таблиц 1251, но ведь данные там всеравно видны как "????" .
получается, что данные перезаписались в другой кодировке?

Re: слетели кодировки баз

Добавлено: 2008-01-14 19:33:03
-=Ded=-
вот что сейчас показывает phpMyAdmin
Серверные переменные и настройки
character set client utf8
(Глобальное значение) cp1251
character set connection utf8
(Глобальное значение) cp1251
character set database cp1251
character set results utf8
(Глобальное значение) cp1251
character set server cp1251
character set system utf8
character sets dir /usr/local/share/mysql/charsets/
collation connection utf8_general_ci
(Глобальное значение) cp1251_general_ci
collation database cp1251_general_ci
collation server cp1251_general_ci

Re: слетели кодировки баз

Добавлено: 2008-01-15 8:49:11
zg
-=Ded=- писал(а):
hizel писал(а):http://dev.mysql.com/doc/refman/5.0/en/ ... abase.html
поможет

например

Код: Выделить всё

ALTER DATABASE [db_name] CHARACTER SET UTF-8 
тоже не помогло :(
это нужно выставлять при создании таблицы или базы, после создания можно запороть вообще все данные, то так как изначальная кодировка была неправильной, то перекодировка будет так же неправильной, то есть в таблице будут прописаны просто вопросики
-=Ded=- писал(а):прописал для всех таблиц 1251, но ведь данные там всеравно видны как "????" .
получается, что данные перезаписались в другой кодировке?
ну да :) бэкап есть?

Re: слетели кодировки баз

Добавлено: 2008-01-15 9:55:18
hizel
ну хз
можно iconv-ом бэкап отрихтовать :/

Re: слетели кодировки баз

Добавлено: 2008-01-15 16:30:36
Alex Keda
hizel писал(а):ну хз
можно iconv-ом бэкап отрихтовать :/
ох тяжело это =)
я форум для экскремента с 4.0 на 5.0 переносил - с третего раза вкурил где что писать и во что перекодировать...

Re: слетели кодировки баз

Добавлено: 2008-01-25 4:40:10
-=Ded=-
в общем нифига не смог сделать, одно радует, что не особо ценная инфа, прибил все и на новую базу поставил.
спасибо всем за советы конечно, но судя по всему "ребенок был мертворожденным" :)

Re: слетели кодировки баз

Добавлено: 2008-03-12 0:20:46
voider
значит проблема не решена))) какую тогда лучше кодировку юзать ,чтоб проблем не было? и ваще чтоб раз и навсегда забыть про проблемы отображения..

Re: слетели кодировки баз

Добавлено: 2008-03-12 8:18:07
zg
voider писал(а):значит проблема не решена))) какую тогда лучше кодировку юзать ,чтоб проблем не было? и ваще чтоб раз и навсегда забыть про проблемы отображения..
чтоб проблем с кодировками не было, надо:
1. mysql-4.1.11 и выше
2. указывать кодировку на соединение
3. указывать кодировку на базу данных
4. указывать кодировку на таблицу
5. указывать кодировку на результат

только в этом случае независимо от настроек сервера будет всегда гарантированный результат.

я юзаю windwos-1251 как под никсом, так и под виндой, если из шела, то просто выставляю кодировку на соединение и результат KOI8-R, проблем не было.

Re: слетели кодировки баз

Добавлено: 2008-03-12 11:45:29
serge
+1
З.Ы. Часть установок причем лучше/проще задать через конфиги сервера MySQL. Т.е. чтобы независимо от уровня знаний клиента это могло правильно работать. Вообще очень частый вопрос с кодировками.

Re: слетели кодировки баз

Добавлено: 2008-03-12 12:05:24
hizel
cp1251 - тяжкое наследие php
utf-8 более универсально

Re: слетели кодировки баз

Добавлено: 2008-03-14 23:57:37
voider
hizel писал(а):cp1251 - тяжкое наследие php
utf-8 более универсально
в чем универсальность?

Re: слетели кодировки баз

Добавлено: 2008-03-14 23:59:55
voider
zg писал(а):
voider писал(а):значит проблема не решена))) какую тогда лучше кодировку юзать ,чтоб проблем не было? и ваще чтоб раз и навсегда забыть про проблемы отображения..
чтоб проблем с кодировками не было, надо:
1. mysql-4.1.11 и выше
2. указывать кодировку на соединение
3. указывать кодировку на базу данных
4. указывать кодировку на таблицу
5. указывать кодировку на результат

только в этом случае независимо от настроек сервера будет всегда гарантированный результат.

я юзаю windwos-1251 как под никсом, так и под виндой, если из шела, то просто выставляю кодировку на соединение и результат KOI8-R, проблем не было.
а примеры есть?

а если я ставлю готовую CMS мне надо обязательно найти конфиг где кодировки к базам задаются? а если он закодирован ioncube тогда как?

Re: слетели кодировки баз

Добавлено: 2008-03-15 5:39:09
zg
При создании таблицы указываешь дефолтную кодировку

Код: Выделить всё

CREATE TABLE `c_razdely_info` (
  `id` varchar(60) NOT NULL default '',
  `name` varchar(60) NOT NULL default '',
  `type` varchar(60) NOT NULL default '',
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251;
из пхп юзается так

Код: Выделить всё

// Соединение с базой данных
@mysql_connect('localhost', 'root') || die('Can\'t connect to database');

// Настройки соединения
my_query('USE `dbname`');
my_query( 'set character_set_client=51' );
my_query( 'set character_set_results=51' );
my_query( 'set character_set_connection=51' );
51 - это cp1251

Re: слетели кодировки баз

Добавлено: 2008-03-16 3:27:59
voider
ok буду знать спасибо :)