Перейти к публикации
View in the app

A better way to browse. Learn more.

Дизайн и модификация Invision Community

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

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

Опубликовано:

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

Я ранее видел где-то 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

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

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.