Haldross 0 09/23/2011 06:37 AM Приветствую.Я ранее видел где-то 2 способа конвертации базы данных форума, сейчас потерял и не знаю какая надежней. В общем-то мне нужно с 3.0.5 перейти на 3.1.х/3.2.х, а для этого, на сколько я знаю, нужно сделать конвертацию кодировки базы данных на utf-8. Читал про способ скриптом, но честно говоря не особо вникал и ничего не понял.Второй же способ - через Сайпекс дампер. Делаем бэкап БД сразу в UTF-8, затем восстанавливаем эту БД, верно? Но проблема в том, что не создается новая БД, а ставить UTF-8 поверх старой БД - по-моему неправильно. В общем, мне нужна ваша помощь.Как проще и надежней всего сделать сменить кодировку базы данных, чтобы ничего не утратить и без проблем заапгрейдить IPB с 3.0.5 на 3.1.4 ? Заранее спасибо, надеюсь на понимание.С ув. Haldross Share this post Link to post Share on other sites
Ph-A 395 09/23/2011 11:33 AM В общем-то мне нужно с 3.0.5 перейти на 3.1.х/3.2.х, а для этого, на сколько я знаю, нужно сделать конвертацию кодировки базы данных на utf-8.3.0.5 уже должна работает в UTF8. Для апгрейда до 3.2 конвертация базы не требуется. Share this post Link to post Share on other sites
Haldross 0 09/25/2011 08:24 AM 3.0.5 уже должна работает в UTF8. Для апгрейда до 3.2 конвертация базы не требуется. Если бы была в UTF-8 я разве создавал бы тему? По-прежнему заглавное сообщение темы актуально. Помогите пожалуйста. Share this post Link to post Share on other sites
Ph-A 395 09/25/2011 09:15 AM Если бы была в UTF-8 я разве создавал бы тему?Могли и создать. По-прежнему заглавное сообщение темы актуально. Помогите пожалуйста. А подробнее. 3.0.5 - английская или русская? База данных в какой кодировке. А таблицы? А есть в этой базе таблицы в другой кодировке? Share this post Link to post Share on other sites
Haldross 0 09/25/2011 09:22 AM 3.0.5 русскаякодировка БД и таблиц cp1251_general_ci Share this post Link to post Share on other sites
Ph-A 395 09/25/2011 09:29 AM 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); ?>Помещаем как файл в корень форума и запускаем. Бекап всего обязателен. Что-то у вас там не то. Глюки точно вылезут :) Share this post Link to post Share on other sites
Haldross 0 09/25/2011 09:51 AM Версия IP.Board v3.0.5 (ID: *****)MYSQL Версия MYSQL 5.0.77Версия PHP 5.2.12 (apache) Что у нас не то? Можешь зайти сам посмотреть. Share this post Link to post Share on other sites
flacmusic 0 09/28/2011 10:11 PM Я конвертил когда переходил на 314 Тут описал метод Share this post Link to post Share on other sites
Ph-A 395 09/29/2011 04:43 AM Тут описал метод А не проще было там же посмотреть первое сообщение темы? А не описывать азбуку в сотый раз. Я конвертил когда переходил на 314 При переходе с 2.x.x При апгрейдах с 3.x.x конвертация не нужна. Share this post Link to post Share on other sites
Haldross 0 09/29/2011 08:21 AM @Ph-A, твое сообщения наверное не ко мне относится. Я ведь хочу перейти с 3.0.5 и она у меня в cp1251_general_ci, апгрейд не ставится, просит кодировку UTF-8 :angry: Share this post Link to post Share on other sites
Ritsuka 539 09/29/2011 09:36 AM @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. Share this post Link to post Share on other sites
Haldross 0 09/30/2011 08:49 AM @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. Вот пожалуйста, скриншот: Share this post Link to post Share on other sites
Ritsuka 539 09/30/2011 04:24 PM 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. Обновляйтесь. Share this post Link to post Share on other sites
Haldross 0 09/30/2011 04:58 PM Спасибо, будет время - попробую.Только если форум полетит - будет жесть... Share this post Link to post Share on other sites
Haldross 0 10/03/2011 10:02 PM 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 Share this post Link to post Share on other sites