SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 23.03.2009 17:52:13

Arthes
Участник
Зарегистрирован: 23.03.2009
Сообщений: 7

Проблема с переносом БД с MySQL 4.x на MySQL 5.x

В общем осуществил перенос БД с с сервера с MySQL 4.х ветки на 5.х
Работаю через phpmyadmin все норм, ну то есть содержание в табличках текста и т.п. все идеально работает , НО:
Стоит нажать на вкладку привелегии и вылазиет ошибка с кодировкой

Код:

SQL-запрос:

(
SELECT DISTINCT `User` , `Host`
FROM `mysql`.`user`
)
UNION (

SELECT DISTINCT `User` , `Host`
FROM `mysql`.`db`
)
UNION (

SELECT DISTINCT `User` , `Host`
FROM `mysql`.`tables_priv`
)
UNION (

SELECT DISTINCT `User` , `Host`
FROM `mysql`.`columns_priv`
)
ORDER BY `User` ASC , `Host` ASC

Ответ MySQL: Документация
#22 - Character set '#17' is not a compiled character set and is not specified in the '/usr/share/mysql/charsets/Index.xml' file

Ну в старой версии Mysql в файле /usr/share/mysql/charsets/Index.xml под строчкой 17 содержиться кодировка win1251 (в MySQL 5 это cp1251).
Я отредоктировал соот /etc/my.cnf , чтоб он воспринимал win1251 а так же даже перенес папку charsets со старого сервака на новый (предварительно нативную папку конечно же сохранив smile.gif )

Может быть проблема еще и в том что файлы кодировок для MySQL 4 имеют вид win1251.conf
а вот для MySQL5 cp1251.xml

Вообще как из этой проблемы выйти?

Неактивен

 

#2 23.03.2009 19:25:42

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6756

Re: Проблема с переносом БД с MySQL 4.x на MySQL 5.x

В сервере 4.0 есть две кодировки — win1251 и cp1251 (да, разные). Первая была признана устаревшей
и была устранена в 4.1. Соответственно, если хотите жить с табличками из четверки, то нужно в четверке
же сконвертировать их в cp1251 (например, myisamchk --set-character-set=cp1251 с остановленным сервером).
Если хотите жить с табличками в пятерке, можете просто пройтись по ним mysqlchk -r.

UPD: Возможно, второй пункт потребует также первого, 4.0 под рукой сейчас нету проверить.

Неактивен

 

#3 24.03.2009 10:38:59

Arthes
Участник
Зарегистрирован: 23.03.2009
Сообщений: 7

Re: Проблема с переносом БД с MySQL 4.x на MySQL 5.x

paulus написал:

В сервере 4.0 есть две кодировки — win1251 и cp1251 (да, разные). Первая была признана устаревшей
и была устранена в 4.1. Соответственно, если хотите жить с табличками из четверки, то нужно в четверке
же сконвертировать их в cp1251 (например, myisamchk --set-character-set=cp1251 с остановленным сервером).
Если хотите жить с табличками в пятерке, можете просто пройтись по ним mysqlchk -r.

UPD: Возможно, второй пункт потребует также первого, 4.0 под рукой сейчас нету проверить.

Попробую второй вариант... Ибо сервер ч 4-кой сверхважен боюсь ченьть испортить...
  1) Захожу в консоль mysql -u root -p
  2) Выбираю БД mysql        USE mysql
  3) ввожу mysqlchk -r colums_priv;
  где colums_priv это табл из БД mysql которую надо исправить....

в итоге синтаксис неверен
mysql> mysqlchk -r db;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'mysqlchk -r db' at line 1

Неактивен

 

#4 24.03.2009 13:10:07

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6756

Re: Проблема с переносом БД с MySQL 4.x на MySQL 5.x

Ну, mysqlchk — это консольная программа. Если хотите делать вручную из клиента mysql,
то можете набрать REPAIR TABLE columns_priv.

Кстати, почему-то вчера в голову не пришло — есть замечательная команда mysql_upgrade,
которая не просто конвертит таблички в новый формат, но и добавляет недостающие поля.

Неактивен

 

#5 25.03.2009 09:38:12

Arthes
Участник
Зарегистрирован: 23.03.2009
Сообщений: 7

Re: Проблема с переносом БД с MySQL 4.x на MySQL 5.x

paulus написал:

Ну, mysqlchk — это консольная программа. Если хотите делать вручную из клиента mysql,
то можете набрать REPAIR TABLE columns_priv.

Кстати, почему-то вчера в голову не пришло — есть замечательная команда mysql_upgrade,
которая не просто конвертит таблички в новый формат, но и добавляет недостающие поля.

Зашел в консоль MySQL перешел на БД mysql, командой USE mysql
     Далее с пом REPAIR TABLE table_name выправил все таблицы.
   Результат --- та же ошибка

mysql_upgrade ------- не помогает! Она проверяет проверяет все пишет ОК ОК ОК, а потом в конце опять та же проблема с кодировкой....
ужос....
  Как быть? не уж то ли единственный вариант остался конвертить БД основную на рабочем MySQL 4.x?

Отредактированно Arthes (25.03.2009 09:38:53)

Неактивен

 

#6 25.03.2009 13:28:29

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6756

Re: Проблема с переносом БД с MySQL 4.x на MySQL 5.x

Возьмите дистрибутив MySQL 4.0 под Вашу платформу, остановите сервер, из дистрибутива 4.0 возьмите
бинарник myisamchk и натравите его на неподдающиеся таблички. Даунгрейдить сервер целиком не нужно.

Неактивен

 

#7 31.03.2009 17:10:39

Arthes
Участник
Зарегистрирован: 23.03.2009
Сообщений: 7

Re: Проблема с переносом БД с MySQL 4.x на MySQL 5.x

Возьмите дистрибутив MySQL 4.0 под Вашу платформу, остановите сервер, из дистрибутива 4.0 возьмите
бинарник myisamchk и натравите его на неподдающиеся таблички. Даунгрейдить сервер целиком не нужно.

То есть у меня сервер Linux
1) Я скачиваю MySQL4.0 с офф сайта под Linux.
2) Далее не устанвливаю а выдергиваю из архива файл myisamchk и временно подменяю им файл из установленного MySQL 5.0...
3) Лечу таблицы и все супер....
4) Возвращаю исходный файл myisamchk на место...
  Так понял? Или не совсем верно???

Отредактированно Arthes (31.03.2009 17:11:23)

Неактивен

 

#8 31.03.2009 18:08:37

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6756

Re: Проблема с переносом БД с MySQL 4.x на MySQL 5.x

В третьем пункте подменять не надо, достаточно положить в сторонке smile

Неактивен

 

#9 02.04.2009 15:30:50

Arthes
Участник
Зарегистрирован: 23.03.2009
Сообщений: 7

Re: Проблема с переносом БД с MySQL 4.x на MySQL 5.x

Ничего не получилось....

Тогда так:

КАК??? можно выудить пароли из mysql БД на сервере с MySQL4.0.20????

    К серверу естественно есть root доступ....
Просто не для всех сайтов на серваке так прям быстро можно откопать значение пароля и имени....
----------------------------------
  Есть надежда если выковорить из БД пароли, то создав таких же юзеров на новом серваке в MySQL5.0 + те же права и все такое будет дост просто скопировать БД сайтов и все будет работать....

  Или я сильно ошибаюсь?

Отредактированно Arthes (02.04.2009 15:31:52)

Неактивен

 

#10 02.04.2009 16:12:46

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6756

Re: Проблема с переносом БД с MySQL 4.x на MySQL 5.x

Выудить никак нельзя, пароли хранятся в хэшах. Можно скопировать базу mysql и натравить
на нее mysql_upgrade (я это раньше, кажется, уже писал). Хэши останутся старыми smile

P.S. Ну и если все-таки хотите вручную мучаться, то SELECT user,host,password FROM mysql.user;

Неактивен

 

#11 14.04.2009 08:53:43

dkplayer
Участник
Зарегистрирован: 14.04.2009
Сообщений: 3

Re: Проблема с переносом БД с MySQL 4.x на MySQL 5.x

Добрый день.
Похожая проблема. Есть бд сайта на mysql 4.1 в кодировке cp1251 сервер крутится под Windows. Необходимо перенести базу и сайт на хост с линуксом, в mysql 5.
Кодировка по умолчанию сервера mysql  на линукс хосте - utf8 в винде соответственно cp1251
если делаю бэкап с помощью mysql admin то бэкапится в утф и восстонавливается нормально, но понятно на сайте отображается всё вопросиками... делаю бэкап с помощью mysqldump сохраняет в cp1251 восстанавливается непонятно как, в phphmyadmin всё отображает вопросиками (Mysql Query Browser аналогично в выдаче запросов вместо русских вопросики).
Помогите советом или линками. Не искушён в подобных вопросах, увы...

Неактивен

 

#12 14.04.2009 12:22:42

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6756

Re: Проблема с переносом БД с MySQL 4.x на MySQL 5.x

phpmyadmin — зло smile

Бэкапьте в utf8, восстанавливайте нормально, а «на сайте» после соединения выполните
команду SET NAMES cp1251 (ну или другую нужную Вам кодировку).

Должно быть как-то так:
$conn = mysql_connect (...);
mysql_query ("SET NAMES cp1251", $conn);

Неактивен

 

#13 14.04.2009 14:37:26

dkplayer
Участник
Зарегистрирован: 14.04.2009
Сообщений: 3

Re: Проблема с переносом БД с MySQL 4.x на MySQL 5.x

Спасибо. Почти так и сделал. Нашёл вот в другом форуме:
Поскольку сайт, как выяснилось, использует библиотечку adodb то помогли вот такие заклинания:
        $adodb->query("set character_set_client='cp1251'"); // говорю БД что данные от клиента будут приходит в кодировке cp1251
        $adodb->query("set character_set_results='cp1251'"); // говорю БД что данные клиенту нужно возвратить обратно в кодировке cp1251
        $adodb->query("set character_set_connection='utf8'");
для верности ещё и:
        $adodb->query("SET NAMES cp1251"");

Кстати интересует такой вопрос (небольшой офтоп). На каком-то форуме вскользь прочитал, что mysql 5 хранит все данные исключительно в utf8 а отдавать может в любой кодировке (что собственно и продемонстрированно примером выше). Так ли это? Или всё таки можно заставить его хранить в любой кодировке? Если да, то можно ли чтобы разные БД на одном сервере были в разных кодировках? Спасибо.

Неактивен

 

#14 14.04.2009 16:09:26

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6756

Re: Проблема с переносом БД с MySQL 4.x на MySQL 5.x

Первые три строчки можно было не делать, SET NAMES делает как раз то, что нужно.
Данные MySQL хранит не обязательно в utf8, он хранит данные в кодировке таблицы.
Можете, например, сказать CREATE TABLE .... CHARSET cp1251 — будет хранить в 1251.

Отдавать будет в любом случае в кодировке подключения (которая меняется через SET NAMES).

Неактивен

 

#15 15.04.2009 07:33:47

dkplayer
Участник
Зарегистрирован: 14.04.2009
Сообщений: 3

Re: Проблема с переносом БД с MySQL 4.x на MySQL 5.x

Большое спасибо.
Теперь всё встало на свои места smile

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson