adeep 212 Posted 2011-12-06 15:45:45 Share Posted 2011-12-06 15:45:45 скачивай в latin1 Link to post Share on other sites
NiTr0 585 Posted 2011-12-06 16:28:51 Share Posted 2011-12-06 16:28:51 у меня база сейчас в кодировке utf8 а таблицы в latin1_swedish_ci .... . теперь надо данные таблиц перекодировать в utf8 Дык charset/collation надо было менять не только для базы, но и для всех полей. Т.е. - sed'ом сменить latin1_swedish_ci на utf8_general_ci, далее - latin1 на utf8, далее - заливать дамп. Надеюсь, экспериментируете хоть не на живом биллинге, а на тестовом? Link to post Share on other sites
kvirtu 315 Posted 2011-12-06 16:30:56 Author Share Posted 2011-12-06 16:30:56 скачивай в latin1 вроде разобрался), скачивать надо именно в latin1 т.к. данные в таблицах хранятся в latin1, вычитал в инете: Распространенная ошибка в таких случаях - когда в --default-character-set указывают фактическую кодировку данных, в данном случае - utf8. В дампе будет мусор. Указывать надо ту, которая установлена в таблицах. В результате MySQL не будет пытаться данные перекодировать, и отдаст их в том виде как они есть. потом дамп скачал на комп, открыл в Notepad++, крякозабры, выбрал кодировку windows-1251 - данные отображаются нормально Далее в нотепаде выбираю "преобразовать в utf-8", сохраняю и заливаю дамп на сервак. Зиливаю дамп в другую (тестовую) базу с кодировкой таблиц и базы в utf8. Захожу в phpmyadmin - вижу данные пользователей нормально. Завтра уже попробую поменять на рабочую базу, отпишусь. Link to post Share on other sites
kvirtu 315 Posted 2011-12-06 16:32:05 Author Share Posted 2011-12-06 16:32:05 у меня база сейчас в кодировке utf8 а таблицы в latin1_swedish_ci .... . теперь надо данные таблиц перекодировать в utf8 Дык charset/collation надо было менять не только для базы, но и для всех полей. Т.е. - sed'ом сменить latin1_swedish_ci на utf8_general_ci, далее - latin1 на utf8, далее - заливать дамп. Надеюсь, экспериментируете хоть не на живом биллинге, а на тестовом? на живом ..., но перед тем как что то делать всегда делал резервный бекап, а юзверы ничего не почувствовали ... Link to post Share on other sites
BUM 242 Posted 2011-12-06 17:17:42 Share Posted 2011-12-06 17:17:42 Попробуй дамп сделать с ключем --skip-set-charset и залить его в базу Link to post Share on other sites
NiTr0 585 Posted 2011-12-06 18:01:38 Share Posted 2011-12-06 18:01:38 скачивать надо именно в latin1 Ну да. О чем я и писал. Далее в нотепаде выбираю "преобразовать в utf-8", сохраняю и заливаю дамп на сервак. Можно просто при заливке указать, в какой кодировке поступают входные данные (set names в дампе, или если нет - default-character-set мускулу). Хотя если хочется через анус - ваше право И уверен, работать не будет т.к. notepad++ радостно сконвертил блобы, в которых хранятся пароли. Как и iconv. на живом ..., но перед тем как что то делать всегда делал резервный бекап, а юзверы ничего не почувствовали ... Мсье извращенец Поднять биллинг (голый веб, без радиуса/крона/прочего хлама) на тестовом стенде - 5 минут дела... Link to post Share on other sites
kvirtu 315 Posted 2011-12-06 20:43:17 Author Share Posted 2011-12-06 20:43:17 И уверен, работать не будет т.к. notepad++ радостно сконвертил блобы, в которых хранятся пароли. Как и iconv.- и какое решение ? Link to post Share on other sites
jack 25 Posted 2011-12-07 00:50:00 Share Posted 2011-12-07 00:50:00 (edited) пока способ на проверке Edited 2011-12-07 01:33:30 by jack Link to post Share on other sites
muff 116 Posted 2011-12-07 00:55:05 Share Posted 2011-12-07 00:55:05 У кого будут встречаться грабли с кодировкой, советую попробовать Sypex Dumper - не раз выручал. Link to post Share on other sites
mr.Scamp 43 Posted 2011-12-07 07:01:44 Share Posted 2011-12-07 07:01:44 А что мешает и дальше держать базу в cp1251? $conf{dbcharset}='cp1251'; Link to post Share on other sites
kvirtu 315 Posted 2011-12-07 09:31:19 Author Share Posted 2011-12-07 09:31:19 скачивать надо именно в latin1 Ну да. О чем я и писал. Далее в нотепаде выбираю "преобразовать в utf-8", сохраняю и заливаю дамп на сервак. Можно просто при заливке указать, в какой кодировке поступают входные данные (set names в дампе, или если нет - default-character-set мускулу). Хотя если хочется через анус - ваше право И уверен, работать не будет т.к. notepad++ радостно сконвертил блобы, в которых хранятся пароли. Как и iconv. на живом ..., но перед тем как что то делать всегда делал резервный бекап, а юзверы ничего не почувствовали ... Мсье извращенец Поднять биллинг (голый веб, без радиуса/крона/прочего хлама) на тестовом стенде - 5 минут дела... метод не прокатил .... пароли сносятся .... вижу только одно конвертировать отдельно нужные таблицы или залить отдельно таблицу с паролями с дампа ?? Link to post Share on other sites
Elisium 10 Posted 2011-12-07 13:01:02 Share Posted 2011-12-07 13:01:02 Ну вот и возвращаемся к первой страничке, а именно к варианту - скрипты )) Как вариант (ИМХО): 1. Слить базу в оригинальном варианте (где данные в СР1251), конвертнуть базу в УТФ8, залить в ПУСТУЮ базу УТФ8. Настроить биллинг на работу с УТФ8 кодировкой. Проверить, ПРАВИЛЬНО ли видно в нем данные. 2. Хз, в каком формате хранятся пароли в Абиллсе. В Нодени это AES_ENCRYPT тип text. Делать SELECT скриптом (перловымипт) паролиид юзеров со старой базы, UPDATE в новую базу без изменений. Повторить пункт 2 для всех таких полей. Ведь кроме паролей юзеров в базе могут еще и какие-нить картинки лежать )), пароли в админку, мало ли чего еще. Както так... Link to post Share on other sites
kvirtu 315 Posted 2011-12-07 13:01:15 Author Share Posted 2011-12-07 13:01:15 С помощью такого скрипта, почти удалось: #!/bin/sh mysqldump --hex-blob --skip-set-charset base | sed -e 's/latin1/utf8/g' | sed -e 's/cp1251/utf8/g' | iconv -f cp1251 -t utf-8 > utf_base.sql Но почему-то не хочет это: iconv -f cp1251 -t utf-8 iconv -f lain1 -t utf-8 - так конвертируется Link to post Share on other sites
NiTr0 585 Posted 2011-12-07 13:17:36 Share Posted 2011-12-07 13:17:36 Дык залить внаглую дамп, указав кодировку cp1251 возможно где-то левый символ вылез, и на нем iconv обламывается. Link to post Share on other sites
kvirtu 315 Posted 2011-12-07 13:33:36 Author Share Posted 2011-12-07 13:33:36 Ух, победил таким скриптиком: #!/bin/sh mysqldump --hex-blob --skip-set-charset --default-character-set=latin1 -u root -p base | sed -e 's/latin1/utf8/g' | sed -e 's/cp1251/utf8/g' | iconv -f cp1251 -t utf-8 > newbase.sql как я понял, ключевое здесь: --hex-blob ВСЕМ спасибо ! Link to post Share on other sites
Elisium 10 Posted 2011-12-07 19:58:47 Share Posted 2011-12-07 19:58:47 Ух, победил таким скриптиком: #!/bin/sh mysqldump --hex-blob --skip-set-charset --default-character-set=latin1 -u root -p ???? | sed -e 's/latin1/utf8/g' | sed -e 's/cp1251/utf8/g' | iconv -f cp1251 -t utf-8 > newbase.sql как я понял, ключевое здесь: --hex-blob ВСЕМ спасибо ! Че, и впрямь такой пароль на базу стоит ? )))) На радостях стереть забыл ? ) Link to post Share on other sites
_seth_ 2 Posted 2013-12-18 10:19:50 Share Posted 2013-12-18 10:19:50 Ух, победил таким скриптиком: #!/bin/sh mysqldump --hex-blob --skip-set-charset --default-character-set=latin1 -u root -p base | sed -e 's/latin1/utf8/g' | sed -e 's/cp1251/utf8/g' | iconv -f cp1251 -t utf-8 > newbase.sql как я понял, ключевое здесь: --hex-blob ВСЕМ спасибо ! Я уже неделю бьюсь над такой же проблемой. Есть билинг на старом серваке база в latin1: mysql> show variables like 'collation%'; +----------------------+-------------------+ | Variable_name | Value | +----------------------+-------------------+ | collation_connection | latin1_swedish_ci | | collation_database | latin1_swedish_ci | | collation_server | latin1_swedish_ci | +----------------------+-------------------+ mysql> show variables like 'character%'; +--------------------------+----------------------------+ | Variable_name | Value | +--------------------------+----------------------------+ | character_set_client | latin1 | | character_set_connection | latin1 | | character_set_database | latin1 | | character_set_filesystem | binary | | character_set_results | latin1 | | character_set_server | latin1 | | character_set_system | utf8 | | character_sets_dir | /usr/share/mysql/charsets/ | +--------------------------+----------------------------+ 8 rows in set (0.00 sec) Снимаю дамп: mysqldump --hex-blob --skip-set-charset --default-character-set=latin1 -u root -p abills > abills.sql смотрю дамп - с кирилицей все в порядке. Делаю: #sed -e 's/latin1/utf8/g' -i abills.sql # sed -e 's/cp1251/utf8/g' -i abills.sql # sed -e 's/ENGINE=MyISAM/ENGINE=InnoDB/g' -i abills.sql #iconv -c -f cp1251 -t utf-8 abills.sql > abills.utf8.sql или же #iconv -f latin1 -t utf-8 abills.sql > abills.utf8.sql смотрю дамп - кирилица не читаема в обоих случаях. Я уже просто не знаю что можно попробовать. Куда смотреть? Что делать? Link to post Share on other sites
muff 116 Posted 2013-12-18 10:40:21 Share Posted 2013-12-18 10:40:21 Попробуйте такой инструмент, как Sypex Dumper Когда-то писал статью по работе с Sypex Dumper Lite 1.0.8. Link to post Share on other sites
madf 279 Posted 2013-12-18 11:49:18 Share Posted 2013-12-18 11:49:18 Боже, Dumper... Lite... Если с кирилицей все в порядке - так может оно там и было в utf8? Зачем его iconv'ом конвертить? Link to post Share on other sites
foreverok 95 Posted 2013-12-18 13:24:42 Share Posted 2013-12-18 13:24:42 Ух, победил таким скриптиком: #!/bin/sh mysqldump --hex-blob --skip-set-charset --default-character-set=latin1 -u root -p base | sed -e 's/latin1/utf8/g' | sed -e 's/cp1251/utf8/g' | iconv -f cp1251 -t utf-8 > newbase.sql как я понял, ключевое здесь: --hex-blob ВСЕМ спасибо ! Я уже неделю бьюсь над такой же проблемой. Есть билинг на старом серваке база в latin1: mysql> show variables like 'collation%'; +----------------------+-------------------+ | Variable_name | Value | +----------------------+-------------------+ | collation_connection | latin1_swedish_ci | | collation_database | latin1_swedish_ci | | collation_server | latin1_swedish_ci | +----------------------+-------------------+ mysql> show variables like 'character%'; +--------------------------+----------------------------+ | Variable_name | Value | +--------------------------+----------------------------+ | character_set_client | latin1 | | character_set_connection | latin1 | | character_set_database | latin1 | | character_set_filesystem | binary | | character_set_results | latin1 | | character_set_server | latin1 | | character_set_system | utf8 | | character_sets_dir | /usr/share/mysql/charsets/ | +--------------------------+----------------------------+ 8 rows in set (0.00 sec) Снимаю дамп: mysqldump --hex-blob --skip-set-charset --default-character-set=latin1 -u root -p abills > abills.sql смотрю дамп - с кирилицей все в порядке. Делаю: #sed -e 's/latin1/utf8/g' -i abills.sql # sed -e 's/cp1251/utf8/g' -i abills.sql # sed -e 's/ENGINE=MyISAM/ENGINE=InnoDB/g' -i abills.sql #iconv -c -f cp1251 -t utf-8 abills.sql > abills.utf8.sql или же #iconv -f latin1 -t utf-8 abills.sql > abills.utf8.sql смотрю дамп - кирилица не читаема в обоих случаях. Я уже просто не знаю что можно попробовать. Куда смотреть? Что делать? Выкиньте команды с iconv и все получится. Link to post Share on other sites
_seth_ 2 Posted 2013-12-18 13:43:43 Share Posted 2013-12-18 13:43:43 Боже, Dumper... Lite... Если с кирилицей все в порядке - так может оно там и было в utf8? Зачем его iconv'ом конвертить? Выкиньте команды с iconv и все получится. Это просто ЖЕСТЬ, все так и есть. madf, foreverok, спасибо вам огромное. Link to post Share on other sites
~AsmodeuS~ 34 Posted 2013-12-18 15:04:53 Share Posted 2013-12-18 15:04:53 Наверное жесть в том что прошло 2 года никто ничего так и не написал выкладываю утилиту из коммерческого набора для ABillS http://abills.net.ua/forum/viewtopic.php?f=1&t=5795&p=29303#p29303 Link to post Share on other sites
kvirtu 315 Posted 2013-12-18 15:46:47 Author Share Posted 2013-12-18 15:46:47 (edited) Наверное жесть в том что прошло 2 года никто ничего так и не написал выкладываю утилиту из коммерческого набора для ABillS http://abills.net.ua/forum/viewtopic.php?f=1&t=5795&p=29303#p29303 Добренький стал, однако .... Edited 2013-12-18 15:46:54 by kvirtu Link to post Share on other sites
~AsmodeuS~ 34 Posted 2013-12-18 15:53:39 Share Posted 2013-12-18 15:53:39 новогодние подарки ) Link to post Share on other sites
kvirtu 315 Posted 2013-12-18 16:45:06 Author Share Posted 2013-12-18 16:45:06 новогодние подарки ) может и мне что-то подарите ? Link to post Share on other sites
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now