Перейти до

Конвертация базы мукскуля.HELP


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

  • Відповіді 52
  • Створено
  • Остання відповідь

Top Posters In This Topic

Top Posters In This Topic

Popular Posts

Наверное жесть в том что прошло 2 года никто ничего так и не написал   выкладываю утилиту из коммерческого набора для ABillS     http://abills.net.ua/forum/viewtopic.php?f=1&t=5795&p=2930

конечно выкладываю еще один из дополнительных комерческих утилит и дополнений   http://abills.net.ua/forum/viewtopic.php?f=1&t=7141     таких у коммерческих пользователей десятки и они эконо

у меня база сейчас в кодировке utf8 а таблицы в latin1_swedish_ci .... :wacko:.

теперь надо данные таблиц перекодировать в utf8

Дык charset/collation надо было менять не только для базы, но и для всех полей. Т.е. - sed'ом сменить latin1_swedish_ci на utf8_general_ci, далее - latin1 на utf8, далее - заливать дамп.

 

Надеюсь, экспериментируете хоть не на живом биллинге, а на тестовом? :)

Ссылка на сообщение
Поделиться на других сайтах

скачивай в latin1

вроде разобрался),

скачивать надо именно в latin1 т.к. данные в таблицах хранятся в latin1, вычитал в инете:

Распространенная ошибка в таких случаях - когда в --default-character-set указывают фактическую кодировку данных, в данном случае - utf8. В дампе будет мусор. Указывать надо ту, которая установлена в таблицах. В результате MySQL не будет пытаться данные перекодировать, и отдаст их в том виде как они есть.

потом дамп скачал на комп, открыл в Notepad++, крякозабры, выбрал кодировку windows-1251 - данные отображаются нормально

Далее в нотепаде выбираю "преобразовать в utf-8", сохраняю и заливаю дамп на сервак.

Зиливаю дамп в другую (тестовую) базу с кодировкой таблиц и базы в utf8. Захожу в phpmyadmin - вижу данные пользователей нормально.

Завтра уже попробую поменять на рабочую базу, отпишусь.

Ссылка на сообщение
Поделиться на других сайтах

у меня база сейчас в кодировке utf8 а таблицы в latin1_swedish_ci .... :wacko:.

теперь надо данные таблиц перекодировать в utf8

Дык charset/collation надо было менять не только для базы, но и для всех полей. Т.е. - sed'ом сменить latin1_swedish_ci на utf8_general_ci, далее - latin1 на utf8, далее - заливать дамп.

 

Надеюсь, экспериментируете хоть не на живом биллинге, а на тестовом? :)

на живом :) ..., но перед тем как что то делать всегда делал резервный бекап, а юзверы ничего не почувствовали ...

Ссылка на сообщение
Поделиться на других сайтах

скачивать надо именно в latin1

Ну да. О чем я и писал.

 

Далее в нотепаде выбираю "преобразовать в utf-8", сохраняю и заливаю дамп на сервак.

Можно просто при заливке указать, в какой кодировке поступают входные данные (set names в дампе, или если нет - default-character-set мускулу). Хотя если хочется через анус - ваше право :)

И уверен, работать не будет т.к. notepad++ радостно сконвертил блобы, в которых хранятся пароли. Как и iconv.

 

на живом :wacko: ..., но перед тем как что то делать всегда делал резервный бекап, а юзверы ничего не почувствовали ...

Мсье извращенец :)

Поднять биллинг (голый веб, без радиуса/крона/прочего хлама) на тестовом стенде - 5 минут дела...

Ссылка на сообщение
Поделиться на других сайтах

И уверен, работать не будет т.к. notepad++ радостно сконвертил блобы, в которых хранятся пароли. Как и iconv.- и какое решение ?

Ссылка на сообщение
Поделиться на других сайтах

У кого будут встречаться грабли с кодировкой, советую попробовать Sypex Dumper - не раз выручал.

Ссылка на сообщение
Поделиться на других сайтах

скачивать надо именно в latin1

Ну да. О чем я и писал.

 

Далее в нотепаде выбираю "преобразовать в utf-8", сохраняю и заливаю дамп на сервак.

Можно просто при заливке указать, в какой кодировке поступают входные данные (set names в дампе, или если нет - default-character-set мускулу). Хотя если хочется через анус - ваше право :)

И уверен, работать не будет т.к. notepad++ радостно сконвертил блобы, в которых хранятся пароли. Как и iconv.

 

на живом :) ..., но перед тем как что то делать всегда делал резервный бекап, а юзверы ничего не почувствовали ...

Мсье извращенец :)

Поднять биллинг (голый веб, без радиуса/крона/прочего хлама) на тестовом стенде - 5 минут дела...

метод не прокатил .... пароли сносятся ....

вижу только одно конвертировать отдельно нужные таблицы или залить отдельно таблицу с паролями с дампа ??

Ссылка на сообщение
Поделиться на других сайтах

Ну вот и возвращаемся к первой страничке, а именно к варианту - скрипты ))

Как вариант (ИМХО):

1. Слить базу в оригинальном варианте (где данные в СР1251), конвертнуть базу в УТФ8, залить в ПУСТУЮ базу УТФ8.

Настроить биллинг на работу с УТФ8 кодировкой. Проверить, ПРАВИЛЬНО ли видно в нем данные.

2. Хз, в каком формате хранятся пароли в Абиллсе. В Нодени это AES_ENCRYPT тип text.

Делать SELECT скриптом (перловымипт) паролиид юзеров со старой базы, UPDATE в новую базу без изменений.

Повторить пункт 2 для всех таких полей. Ведь кроме паролей юзеров в базе могут еще и какие-нить картинки лежать )), пароли в админку, мало ли чего еще.

 

Както так...

Ссылка на сообщение
Поделиться на других сайтах

С помощью такого скрипта, почти удалось:

#!/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 - так конвертируется

Ссылка на сообщение
Поделиться на других сайтах

Ух, победил таким скриптиком:

#!/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

ВСЕМ спасибо !

Ссылка на сообщение
Поделиться на других сайтах

Ух, победил таким скриптиком:

#!/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

ВСЕМ спасибо !

Че, и впрямь такой пароль на базу стоит ? ))))

На радостях стереть забыл ? )

Ссылка на сообщение
Поделиться на других сайтах
  • 2 years later...

Ух, победил таким скриптиком:

#!/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

смотрю дамп - кирилица не читаема в обоих случаях.

 

Я уже просто не знаю что можно попробовать. Куда смотреть? Что делать?

Ссылка на сообщение
Поделиться на других сайтах

Попробуйте такой инструмент, как Sypex Dumper

Когда-то писал статью по работе с Sypex Dumper Lite 1.0.8.

Ссылка на сообщение
Поделиться на других сайтах

 

Ух, победил таким скриптиком:

#!/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 и все получится.

Ссылка на сообщение
Поделиться на других сайтах

Боже, Dumper... Lite...

Если с кирилицей все в порядке - так может оно там и было в utf8? Зачем его iconv'ом конвертить?

 

 

 

Выкиньте команды с iconv и все получится.

Это просто ЖЕСТЬ, все так и есть. madf, foreverok, спасибо вам огромное.

Ссылка на сообщение
Поделиться на других сайтах

Наверное жесть в том что прошло 2 года никто ничего так и не написал

 

выкладываю утилиту из коммерческого набора для ABillS

 

 

http://abills.net.ua/forum/viewtopic.php?f=1&t=5795&p=29303#p29303

Ссылка на сообщение
Поделиться на других сайтах
Опубліковано: (відредаговано)

Наверное жесть в том что прошло 2 года никто ничего так и не написал

 

выкладываю утилиту из коммерческого набора для ABillS

 

 

http://abills.net.ua/forum/viewtopic.php?f=1&t=5795&p=29303#p29303

Добренький стал,

однако .... :facepalm:

Відредаговано kvirtu
Ссылка на сообщение
Поделиться на других сайтах

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

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

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

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

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

Вхід

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

Войти сейчас
  • Зараз на сторінці   0 користувачів

    Немає користувачів, що переглядають цю сторінку.


×
×
  • Створити нове...