Перейти к публикации
Дизайн и модификация IPS Community IPBSkinsBETA
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...
Haldross

Конвертирование кодировки БД

Рекомендованные сообщения

Приветствую.

Я ранее видел где-то 2 способа конвертации базы данных форума, сейчас потерял и не знаю какая надежней.

 

В общем-то мне нужно с 3.0.5 перейти на 3.1.х/3.2.х, а для этого, на сколько я знаю, нужно сделать конвертацию кодировки базы данных на utf-8.

 

Читал про способ скриптом, но честно говоря не особо вникал и ничего не понял.

Второй же способ - через Сайпекс дампер.

 

Делаем бэкап БД сразу в UTF-8, затем восстанавливаем эту БД, верно?

 

Но проблема в том, что не создается новая БД, а ставить UTF-8 поверх старой БД - по-моему неправильно.

 

В общем, мне нужна ваша помощь.

Как проще и надежней всего сделать сменить кодировку базы данных, чтобы ничего не утратить и без проблем заапгрейдить IPB с 3.0.5 на 3.1.4 ?

 

Заранее спасибо, надеюсь на понимание.

С ув. Haldross

Поделиться сообщением


Ссылка на сообщение

В общем-то мне нужно с 3.0.5 перейти на 3.1.х/3.2.х, а для этого, на сколько я знаю, нужно сделать конвертацию кодировки базы данных на utf-8.

3.0.5 уже должна работает в UTF8. Для апгрейда до 3.2 конвертация базы не требуется.

Поделиться сообщением


Ссылка на сообщение

3.0.5 уже должна работает в UTF8. Для апгрейда до 3.2 конвертация базы не требуется.

 

Если бы была в UTF-8 я разве создавал бы тему?

 

По-прежнему заглавное сообщение темы актуально. Помогите пожалуйста.

Поделиться сообщением


Ссылка на сообщение

Если бы была в UTF-8 я разве создавал бы тему?

Могли и создать.

 

По-прежнему заглавное сообщение темы актуально. Помогите пожалуйста.

А подробнее. 3.0.5 - английская или русская?

База данных в какой кодировке.

 

А таблицы?

А есть в этой базе таблицы в другой кодировке?

Поделиться сообщением


Ссылка на сообщение

3.0.5 русская

кодировка БД и таблиц cp1251_general_ci

Поделиться сообщением


Ссылка на сообщение

3.0.5 русская

И у вас она поставилась и работает???

Странно.

 

кодировка БД и таблиц cp1251_general_ci

Конвертор от Ritsuka -

<?php
// Database info

include("conf_global.php");

$dbhost = $INFO['sql_host'];
$dbuser = $INFO['sql_user'];
$dbpass = $INFO['sql_pass'];
$dbname = $INFO['sql_database'];

//---------------

header('Content-type: text/plain');

$dbconn = mysql_connect($dbhost, $dbuser, $dbpass) or die( mysql_error() );
$db = mysql_select_db($dbname) or die( mysql_error() );

$sql = "ALTER DATABASE `".$dbname."` DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci";
$result = mysql_query($sql) or die( mysql_error() );
print "Database changed to UTF-8.\n";

$sql = 'SHOW TABLES';
$result = mysql_query($sql) or die( mysql_error() );

while ( $row = mysql_fetch_row($result) )
{
$table = mysql_real_escape_string($row[0]);
$sql = "ALTER TABLE $table DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci, CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci";
mysql_query($sql) or die( mysql_error() );
print "$table changed to UTF-8.\n";
}

mysql_close($dbconn);
?>

Помещаем как файл в корень форума и запускаем.

 

Бекап всего обязателен. Что-то у вас там не то. Глюки точно вылезут :)

Поделиться сообщением


Ссылка на сообщение

Версия IP.Board v3.0.5 (ID: *****)

MYSQL Версия MYSQL 5.0.77

Версия PHP 5.2.12 (apache)

 

Что у нас не то?

Можешь зайти сам посмотреть.

Поделиться сообщением


Ссылка на сообщение

Я конвертил когда переходил на 314

Тут описал метод

Поделиться сообщением


Ссылка на сообщение

Тут описал метод

А не проще было там же посмотреть первое сообщение темы? А не описывать азбуку в сотый раз.

 

Я конвертил когда переходил на 314

При переходе с 2.x.x При апгрейдах с 3.x.x конвертация не нужна.

Поделиться сообщением


Ссылка на сообщение

@Ph-A, твое сообщения наверное не ко мне относится. Я ведь хочу перейти с 3.0.5 и она у меня в cp1251_general_ci, апгрейд не ставится, просит кодировку UTF-8 :angry:

Поделиться сообщением


Ссылка на сообщение

@Haldross, разделяю удивление @Ph-A.

 

Во-первых, "русская версия IP.Board" тупо не ставится с кодирвкой, отличной от UTF-8. И не работает нормально.

 

Во-вторых, на вашем сайте:

		<meta http-equiv="content-type" content="text/html; charset=UTF-8" />

 

Напрямую берется из настроек в БД, и прописывается также при подключении к БД через SET NAMES. Если бы у вас в БД было cp_1251, то как минимум были бы проблемы с русскими буквами Р и Я, и обрезающимися рандомно постами. А обычно еще и посты превращаются в кашу...

 

Может быть, у вас дефолтная кодировка для всей БД стоит в cp_1251, а таблицы все же в UTF-8? Ну или ваш MySQL сервер хитро оттюнингован и уже давно стоически конвертирует все в две стороны "на лету". Сделайте скрин страницы с БД в phpmyadmin.

Поделиться сообщением


Ссылка на сообщение

@Haldross, разделяю удивление @Ph-A.

 

Во-первых, "русская версия IP.Board" тупо не ставится с кодирвкой, отличной от UTF-8. И не работает нормально.

 

Во-вторых, на вашем сайте:

		<meta http-equiv="content-type" content="text/html; charset=UTF-8" />

 

Напрямую берется из настроек в БД, и прописывается также при подключении к БД через SET NAMES. Если бы у вас в БД было cp_1251, то как минимум были бы проблемы с русскими буквами Р и Я, и обрезающимися рандомно постами. А обычно еще и посты превращаются в кашу...

 

Может быть, у вас дефолтная кодировка для всей БД стоит в cp_1251, а таблицы все же в UTF-8? Ну или ваш MySQL сервер хитро оттюнингован и уже давно стоически конвертирует все в две стороны "на лету". Сделайте скрин страницы с БД в phpmyadmin.

 

Форум не апгрейдится до 3.1.4 к примеру, пишет, что кодировка НЕ UTF-8.

 

Вот пожалуйста, скриншот:

 

post-46624-0-65597500-1317372542_thumb.png

Поделиться сообщением


Ссылка на сообщение

1. Сделайте полный бекап базы. Обязательно убедитесь, что бекап потом разворачивается :)

 

2. Ставьте форум в режим offline.

 

3. База у вас небольшая, тут не потребуется никаких дампов и SSH, хватит и скрипта на PHP, поэтому сохраняете следующий код как файл any_name_you_like.php в коре папки с форумом и выполняете.

 

3. Смотрите через phpmyadmin - все таблицы должны быть в UTF8. Если нет - конвертер не сработал. Восстанавливаем из бекапа и пробуем другие варианты.

 

4. Как только добились результата, включаете форум и проверяете, работает ли он как раньше.

 

Т.к. у вас сейчас форум работает и ему хоть бы хны, хотя база и в cp1251, значит у вас скрипт (нуль, как я вижу) не на базе скрипта от IBResource, и в нем нет "SET NAMES". А значит, после конвертирования весь форум может стать кракозябрами. Если это так, то, снова выключаете форум, и в файлы /ips_kernel/classDbMysqlClient.php и /ips_kernel/classDbMysqliClient.php находите функцию connect():

	public function connect()

 

и добавляете в конец перед:

        return TRUE;

   }

 

Строку:

$this->query( "SET NAMES utf8'" );

 

Снова включаете, проверяете. Должно заработать и показывать все нормально.

 

5. Все, форум в UTF8. Обновляйтесь.

Поделиться сообщением


Ссылка на сообщение

Спасибо, будет время - попробую.

Только если форум полетит - будет жесть...

Поделиться сообщением


Ссылка на сообщение

1. Сделайте полный бекап базы. Обязательно убедитесь, что бекап потом разворачивается :)

 

2. Ставьте форум в режим offline.

 

3. База у вас небольшая, тут не потребуется никаких дампов и SSH, хватит и скрипта на PHP, поэтому сохраняете следующий код как файл any_name_you_like.php в коре папки с форумом и выполняете.

 

3. Смотрите через phpmyadmin - все таблицы должны быть в UTF8. Если нет - конвертер не сработал. Восстанавливаем из бекапа и пробуем другие варианты.

 

4. Как только добились результата, включаете форум и проверяете, работает ли он как раньше.

 

Т.к. у вас сейчас форум работает и ему хоть бы хны, хотя база и в cp1251, значит у вас скрипт (нуль, как я вижу) не на базе скрипта от IBResource, и в нем нет "SET NAMES". А значит, после конвертирования весь форум может стать кракозябрами. Если это так, то, снова выключаете форум, и в файлы /ips_kernel/classDbMysqlClient.php и /ips_kernel/classDbMysqliClient.php находите функцию connect():

	public function connect()

 

и добавляете в конец перед:

        return TRUE;

   }

 

Строку:

$this->query( "SET NAMES utf8'" );

 

Снова включаете, проверяете. Должно заработать и показывать все нормально.

 

5. Все, форум в UTF8. Обновляйтесь.

 

Достаточно было convert.php. Кодировка идеально изменилась на utf8, потратил около минуты времени.

Спасибо огромное. Сейчас буду делать апгрейд на 3.1.4

Поделиться сообщением


Ссылка на сообщение

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу.

×
×
  • Создать...