SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 15.10.2009 23:20:56

Vlado
Участник
Зарегистрирован: 15.10.2009
Сообщений: 11

проблемы с кодировкой после падения хостинга

В начале октября у  (Хостинг Центр) был какой-то сбой, сайт не могли подключиться к БД.
Потом все заработало, но кодировка стала не той что была... Русские символы, кириллица из полей БД-вся в виде ?????
У меня 2 сайт на одном домене. использую CMS Textpattern который в БД записывает поля в UTF и так было всегда.
Но видимо после сбоя настройки сервера поменялись.
Как вот мне теперь поступить?
В бд я смотрю все данные в юникоде, но например MyISAM /*!40101 DEFAULT CHARSET=cp1251 */;

В настройках через 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_unicode_ci
(Глобальное значение)     cp1251_general_ci
collation database     cp1251_general_ci
collation server     cp1251_general_ci

тоесть в основном все настроена на 1251

я пробовал задать Collation/SET NAMES но это не дало ничего, пытался через клиент поменять переменные, но ведь у меня нет прав, хостинг-то виртуальный...

Отредактированно Vlado (05.08.2018 09:25:52)

Неактивен

 

#2 15.10.2009 23:37:22

nightssss
Участник
Зарегистрирован: 13.10.2009
Сообщений: 14

Re: проблемы с кодировкой после падения хостинга

Попробуйте написать запрос:
SHOW VARIABLES LIKE 'char%'
или
SHOW GLOBAL VARIABLES LIKE 'char%'

Он покажет все системные переменные связанные с кодировками.

А потом попробуйте задать переменную, которую хотите поменять, если конечно в этом проблема, например
SET character_set_client=utf8
или
SET GLOBAL character_set_client=utf8

Отредактированно nightssss (15.10.2009 23:51:40)

Неактивен

 

#3 16.10.2009 14:40:33

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: проблемы с кодировкой после падения хостинга

Важно не то, что в phpmyadmin, а то, что в настройках подключения
приложения (php, я так понимаю?). SET NAMES utf8 вполне достаточно
при условии, что данные там действительно записаны в utf8.

В phpmyadmin русская информация отображается правильно?

Неактивен

 

#4 16.10.2009 15:25:50

Vlado
Участник
Зарегистрирован: 15.10.2009
Сообщений: 11

Re: проблемы с кодировкой после падения хостинга

nightssss, хотел попробовать, но...
утром в 8:30 стал пробовать и не смог даже в РМА войти, вместо всего пишет
#2013 - Lost connection to MySQL server during query. Database unavailable.
Вот и платный хостинг называется. Как бы теперь выбрать?

paulus: В РМА поля отображаются не корректно...

Неактивен

 

#5 16.10.2009 16:39:43

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: проблемы с кодировкой после падения хостинга

Тогда, скорее всего, нужно писать в поддержку хостинга sad

По Вашему описанию сложилось такое ощущение:
1. Раньше у них был MySQL версии 4.0 и Вы писали в базу с кодировкой utf8.
2. Потом случилась проблема, и они обновили MySQL до версии 5.0+. Различие версий — в поддержке кодировок.
3. Соответственно, они запустили сервер с default character set = cp1251, наплевав на кодировки, которые реально есть в базе данных.
4. Ну и поэтому у Вас ничего не работает.

Если гипотеза правильная, то «SET NAMES cp1251» после подключения из php-приложения спасет Ваши данные (MySQL увидит одинаковые кодировки со стороны данных и подключения и не станет их перекодировать). При этом они будут приходить в кодировке utf8 (в той, в которой были записаны на диск). Впрочем, phpMyAdmin все равно будет показывать их криво.

Неактивен

 

#6 16.10.2009 20:47:19

Vlado
Участник
Зарегистрирован: 15.10.2009
Сообщений: 11

Re: проблемы с кодировкой после падения хостинга

paulus написал:

«SET NAMES cp1251» после подключения из php-приложения спасет Ваши данные

увы, я не знаю как это делается. За 2 недели неработающего mysql, понял всего ничего, и единственное умею в РМА "запросы" базе посылать...
хостинг центр едва на днях дал вразумительную рекомендацию, но опять же в общих словах, что не решает вопроса.

сейчас поразмыслив и поискав, нашел для своей CMS (textpattern), куда добавлять
написал:
            mysql_query("set names utf8");
        mysql_query("set character set client=utf8");
        mysql_query("set character set database=utf8");
        mysql_query("set character set server=utf8");
        mysql_query("set collation database=utf8_unicode_ci");
        mysql_query("set collation server=utf8_unicode_ci");
Но по прежнему ничего не изменилось. плюс никак в РМА не могу войти.

кажется наступает полная путаница. назревает или создание БД заново, не знаю есть ли смысл или переход на другого провайдера.

Отредактированно Vlado (16.10.2009 22:34:40)

Неактивен

 

#7 17.10.2009 02:10:17

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: проблемы с кодировкой после падения хостинга

Вам ведь написали, что нужно указать «SET NAMES cp1251», а вы зачем-то пишите "set names utf8".

Для понимания сути проблемы рекомендую посмотреть статью Обновление сервера 3.23 и 4.0

Неактивен

 

#8 17.10.2009 08:13:20

Vlado
Участник
Зарегистрирован: 15.10.2009
Сообщений: 11

Re: проблемы с кодировкой после падения хостинга

vasya: Я и mysql_query("set names cp1251"); писал, проблема оставалась. просто незнание и логика говорят что все в UTF надо ставить

Неактивен

 

#9 17.10.2009 13:53:39

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: проблемы с кодировкой после падения хостинга

Вывод команды SHOW CREATE TABLE tablename (с реальным названием таблицы,
разумеется) покажите, пожалуйста.

Неактивен

 

#10 18.10.2009 04:25:42

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: проблемы с кодировкой после падения хостинга

Угу, похоже, мои предположения таки правильные. В метаданных у Вас написано, что кодировка
cp1251, а реально там кодировка utf8 (по Вашим словам). Соответственно, нужно делать
SET NAMES cp1251 и ожидать, что данные будут приезжать при этом в utf8. Пробуйте, должно
получиться.

Ну а в хостинг нужно написать, что они были кардинально неправы, когда такое сделали.

Неактивен

 

#11 18.10.2009 09:03:21

Vlado
Участник
Зарегистрирован: 15.10.2009
Сообщений: 11

Re: проблемы с кодировкой после падения хостинга

paulus: в хостинг я уже писал, они сначала начали отмазываться, но потом признались что ошибка их. пока вот только на этом остановилось все.
сейчас попытался снова к себе зайти, опять Database unavailable и т.д. вчера еще хоть был момент когда работало.
написал трем хостинг-конкурент, все предлагают дешевле и с радостью свои услуги.
вопрос о переносе меня только смущает.

может я не там пишу SET NAMES cp1251 ? может в самой БД есть "инициализующий код" а не в моем PHP приложении?
в CMS я вставляю в файл, который задает параметры доступа к БД. во всей CMS все параметры стоят и стояли UTF...

Отредактированно Vlado (18.10.2009 09:04:54)

Неактивен

 

#12 18.10.2009 10:22:54

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: проблемы с кодировкой после падения хостинга

Может вы не везде побороли параметры своей CMS. Попробуйте положить отдельный файлик php и посмотрите результат.

<?php
$dbserver = "...";
$dbname = "...";
$db_username = "...";
$db_password = "...";

header("Content-Type: text/html; charset=utf8");

$sql = "SET NAMES cp1251";
$result = mysql_query($sql) or die(mysql_error());

$sql = "SELECT * FROM textpattern LIMIT 1";
$result = mysql_query($sql) or die(mysql_error());
if($aRow = mysql_fetch_assoc($result)) {
  print_r($aRow);
}
?>

Неактивен

 

#13 18.10.2009 12:08:05

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: проблемы с кодировкой после падения хостинга

Vlado написал:

заполнил поля как надо, загрузил, запустил, но мне выдается:

Да, я протупил малость. Нужно ведь ещё подключиться к базе.

$db_connection = mysql_connect($dbserver, $db_username, $db_password) or die(mysql_error());
$result = mysql_select_db($dbname,$db_connection) or die(mysql_error());

Ну и естественно незабыть указать имя базы данных.

P.S. Обратите внимание, что этот скрипт нужно исполнять без использования вашей CMS.

P.P.S. У вас есть возможность сделать дамп с помощью утилиты mysqldump, а не средствами phpadmin.

Неактивен

 

#14 18.10.2009 19:55:28

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: проблемы с кодировкой после падения хостинга

Ну что же мы убедились, что в базе данные не пострадали.

Осталось только сделать дамп, указав кодировку соединения cp1251, чтобы сервер не перекодировал данные при создании дампа. Затем руками поправить дамп, указав что данные находятся в utf8. Подробнее см. статью Обновление сервера 3.23 и 4.0

И переезжать на новый хостингsmile

Неактивен

 

#15 18.10.2009 20:16:48

Vlado
Участник
Зарегистрирован: 15.10.2009
Сообщений: 11

Re: проблемы с кодировкой после падения хостинга

подождите. не понимаю логики.
судя по всему, средствами php можно настроить вывод данных в нужном виде. вот только как CMS настроить) или я что-то не понимаю?
зачем создавать дамп? зачем менять провайдера?

Неактивен

 

#16 18.10.2009 20:56:29

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: проблемы с кодировкой после падения хостинга

Из этого

Vlado написал:

сейчас попытался снова к себе зайти, опять Database unavailable и т.д. вчера еще хоть был момент когда работало.
написал трем хостинг-конкурент, все предлагают дешевле и с радостью свои услуги.
вопрос о переносе меня только смущает.

я сделал вывод, что вы хотите сменить хостера, но не знаете как перенести свои данные.

Настроит вывод данных средствами php конечно можно, а что касается настроики вашей CMS ничего сказать не могу.
В любом случае продолжать хранить данные в utf8, когда сервер считает, что они в cp1251 неправильно. Рано или поздно (скорее рано) это приведет к проблемам. Самый простой путь - метод резервных копий (см статью).

Неактивен

 

#17 18.10.2009 21:43:14

Vlado
Участник
Зарегистрирован: 15.10.2009
Сообщений: 11

Re: проблемы с кодировкой после падения хостинга

мне проще все перенастроить и пользоваться кривой сейчас...
перенос еще и стопориться тем, что конкуренты предлагают услуги по другим ценам, но не все лучше.

итак, если уже дело дошло до того, что нужно теперь все хранить в 1251 (или попробовать испугать хостера?)
я могу дамп перекодировать\поправить не через оболочку а другими средствами и залить все снова? если да, то кроме настроек wvc что из актуальных сейчас надо будет менять?
блин, все на utf переходят а хостер на старье((

в данный момент:
SHOW VARIABLES LIKE 'char%'
Variable_name    Value
character_set_client    utf8
character_set_connection    utf8
character_set_database    utf8
character_set_results    utf8
character_set_server    cp1251
character_set_system    utf8
character_sets_dir    /usr/local/share/mysql/charsets/

SHOW GLOBAL VARIABLES LIKE 'char%'
Variable_name    Value
character_set_client    cp1251
character_set_connection    cp1251
character_set_database    cp1251
character_set_results    cp1251
character_set_server    cp1251
character_set_system    utf8
character_sets_dir    /usr/local/share/mysql/charsets/

Неактивен

 

#18 19.10.2009 15:03:48

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: проблемы с кодировкой после падения хостинга

Vlado написал:

итак, если уже дело дошло до того, что нужно теперь все хранить в 1251 (или попробовать испугать хостера?)

Вы не так поняли. Вы можете хранить данные в utf8, главное, чтобы сервер понимал, что это utf8, а не считал, что данные находятся в иной кодировке (например, cp1251, как сейчас).
Давайте вы все-таки прочитаете статью. Автор думал, слова придумывал и, кстати, очень подробно все расписалwink

Неактивен

 

#19 21.10.2009 15:00:37

Vlado
Участник
Зарегистрирован: 15.10.2009
Сообщений: 11

Re: проблемы с кодировкой после падения хостинга

с помощью службы поддержки вроде все наладилось,
надеюсь на долгие годы)),
восстановлением БД с нужными параметрами и ее переконвертацией.

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson