Проблема переноса дампа с сервера на локаль

vovik

Новичок
Прочитал все, проблемы не понял.

Есть дамп. В некоей кодировке. Похоже, что в CP1251.
Есть сервер. На сервере по умолчанию кодировка UTF-8.
Так ?


Если дамп в CP1251, то в любом случае первой строкой дампа нужно написать "SET NAMES 'CP1251';".

Если на сервере таблицы должны быть в UTF-8, то нужно убедиться, что при создании таблиц в дампе нет указания кодировки (будут созданы в умолчательной кодировке сервера). Ну или прописать UTF-8 для каждой.

Если на сервере таблицы должны быть в CP1251, то для каждой таблицы надо указать при создании эту кодировку.

После этого залить дамп. Все.
 

Gostemilov

Новичок
Да могу-то я по-разному... Но дело в том, что когда число записей в БД переваливает за сотни тысяч - единственным способом поддерживать сайт в актуальном состоянии остается именно дамп. Команда Sypex Dumper (как я уже писал) оказала мне серьезную помощь и ИХ дампером я могу снять читаемый дамп. Но. Цель-то в том, чтобы загнеть дамп ТУДА!. А это нереально. Пожалуйста, для всех открытый доступ - есть база, с которой Вы можете делатьвсе, что угодно, вплоть до удаления (логин и пасс в личку). Это отдельный сайт, перевести корторый в кириллицу я не могу. Глянете?
 

Gorynych

Посетитель PHP-Клуба
Gostemilov
если у вас есть дамп (который по моему пониманию скорее всего представляет собой файл, состоящий из sql-команд), то в процессе этого обсуждения было высказанно несколько вариантов его преобразования.

что именно из выше перечисленного Вы пытаетесь и не можете сделать с дампом? Что у Вас получается и не получается в результате ваших действий?

как выглядят данные после переноса на конечный сервер:

а) в результате запроса в базе. Для чистоты эксперимента хотелось бы понять, как это выглядит именно с точки зрения консоли MySQLя, а не в phpMyAdmin'е и т.п. Если вы понимаете, о чем речь, то хотелось бы нечто вроде результата выполнения
Код:
mysql> select * from какая-то_таблица limit 0,5;
б) как они выглядят в результате работы вашего php-скрипта?

потому как лично я не способен телепатически угадать, что Вы делаете и что при этом на самом деле происходит
 

Gostemilov

Новичок
Нет проблем.
Вот как это выглядит визуально:
(кстати, я тоже не телепат и меня сильно раздражает, когда на форуме просят обьяснить то, чего я в глаза не видел)

http://forum.dklab.ru/viewtopic.php?t=21541

Вот как выглядит структура дампа

DROP TABLE IF EXISTS runcms_artstories;
CREATE TABLE `runcms_artstories` (
`storyid` mediumint(8) unsigned NOT NULL auto_increment,
`uid` mediumint(8) unsigned NOT NULL default '0',
`title` varchar(255) /*!40101 character set latin1 */ NOT NULL default '',
`created` int(10) unsigned NOT NULL default '0',
`published` int(10) unsigned NOT NULL default '0',
`hostname` varchar(15) /*!40101 character set latin1 */ NOT NULL default '',
`allow_html` tinyint(1) unsigned NOT NULL default '0',
`allow_smileys` tinyint(1) unsigned NOT NULL default '0',
`allow_bbcode` tinyint(1) unsigned NOT NULL default '1',
`hometext` text /*!40101 character set latin1 */ NOT NULL,
`bodytext` text /*!40101 character set latin1 */,
`counter` mediumint(8) unsigned NOT NULL default '0',
`topicid` mediumint(8) unsigned NOT NULL default '1',
`ihome` tinyint(1) unsigned NOT NULL default '0',
`notifypub` tinyint(1) unsigned NOT NULL default '0',
`type` enum('admin','user') /*!40101 character set latin1 */ NOT NULL default 'user',
`topicdisplay` tinyint(1) unsigned NOT NULL default '0',
`topicalign` enum('R','L','0') /*!40101 character set latin1 */ NOT NULL default '0',
`rating` float(4,2) NOT NULL default '0.00',
`votes` smallint(5) unsigned NOT NULL default '0',
`comments` smallint(5) unsigned NOT NULL default '0',
PRIMARY KEY (`storyid`),
KEY `idx` (`topicid`,`published`,`ihome`,`created`)
) ENGINE=MyISAM /*!40101 DEFAULT CHARSET=cp1251 */ /*!40101 COLLATE=cp1251_general_cs */;

только к этому надо добавить, что в РМА все таблицы в latin1_sweden_ci, базовая кодировка UTF8.......

Мне намного проще скинуть Вам доступ, чем ЭТО обьяснить.Если возьметесь хотя бы посмотреть - буду крайне признателен.
 

fixxxer

К.О.
Партнер клуба
1) подпиши первой строчкой дампа
set names cp1251;

2) убери эти гадости глобальной заменой
/*!40101 character set latin1 */

3) перезалей
 

Gorynych

Посетитель PHP-Клуба
Gostemilov понимаете, я сильно боюсь, что у меня-то ваш дам преобразуется нормально и т.п. но это не поможет Вам.

повторяю - что из описанных выше путей решения Вы делали? К чему приводят эти действия?



есть ли у вас доступ по SSH на сервер хостера и можете вы там запустить консоль mysql'я, чтобы можно было посмотреть на то, как выглядят строковые данные в базе?

мне почему-то начинает казаться, что все дело в путаннице. Например вы пишите, что в PMA все таблицы в latin1_sweden_ci, базовая кодировка UTF8 Ну и что? PMA отображает данные нормально? Если да, то посмотрите (обратите внимание) на HTML-код выдаваемой им страницы. Наверняка там будет стоять что-то вроде
Код:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
что, собственно, говорит браузеру о том, что эту страницу надо отображать в кодировке utf-8

дамп не объяснит мне ситуацию на вашем хостинге, на вашей локали и что вы уже сделали для решения задачи. Или Вы предлагаете зайти под вашим логином на сервер вашего провайдера и сделать нужные манипуляции?

во-первых - смело (ценю). Во-вторых - а как вы будете действовать в следующий раз?

-~{}~ 28.06.06 18:35:

UPD: обратите внимание на последний совет fixxxer
 

Gostemilov

Новичок
Так. Давайте перенесем разговор на другой уровень. 1000 рублей или сколько там WMZ по курсу. + полный доступ. От Вас - все-таки посмотреть, что там. Наш диалог напоминает общение слепого с глухим, причем я в данном случае - слепоглухонемой, который обьясняет значение слова "белый".
 
Сверху