* [Sysadmins] Кодировка при переходе с mysql4 на mysql5
@ 2008-08-07 15:45 Aleksey E. Birukov
2008-08-07 16:01 ` Nikolay A. Fetisov
2008-08-07 20:39 ` Aleksey E. Birukov
0 siblings, 2 replies; 9+ messages in thread
From: Aleksey E. Birukov @ 2008-08-07 15:45 UTC (permalink / raw)
To: Sysadmins
Есть файлы базы из /var/lib/mysql/db/host1248. База создавалась на mysql
версии 4. Соответственно на версии 5. Проблема с кодировкой. Как можно
ее решить?
На одном сервере я добавлял init-connect='SET NAMES cp1251' в my.cnf а
потом заливал дамп, сделанный на 4-ой версии.
Есть ли более оптимальный способ?
Я попробовал на 5-ой версии дамп сделать -- ошибка:
mysqldump: Error 1194: Table 'sml_stat_hosts' is marked as crashed and
should be repaired when dumping table `sml_stat_hosts` at row: 1746290
Причем я пробовал эту таблицу починить через phpMyAdmin
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [Sysadmins] Кодировка при переходе с mysql4 на mysql5
2008-08-07 15:45 [Sysadmins] Кодировка при переходе с mysql4 на mysql5 Aleksey E. Birukov
@ 2008-08-07 16:01 ` Nikolay A. Fetisov
2008-08-07 17:13 ` Aleksey E. Birukov
2008-08-07 17:20 ` Aleksey E. Birukov
2008-08-07 20:39 ` Aleksey E. Birukov
1 sibling, 2 replies; 9+ messages in thread
From: Nikolay A. Fetisov @ 2008-08-07 16:01 UTC (permalink / raw)
To: sysadmins
On Thu, 07 Aug 2008 19:45:02 +0400
Aleksey E. Birukov wrote:
> Есть файлы базы из /var/lib/mysql/db/host1248. База создавалась на mysql
> версии 4. Соответственно на версии 5. Проблема с кодировкой. Как можно
> ее решить?
Как обычно - понять, в чём проблема, и что нужно получить. Далее
определиться с нужными шагами.
В общем случае, надо получать dump надо в той же кодировке
(неправильной!), которая указана в базе. Иначе умный MySQL будет
выполнять неизвестно какие преобразования с непонятными последствиями.
Затем в полученном dump'е надо переправить _записи_ о кодировке таблиц
на правильные. Указать в заголовке dump'а правильный SET NAMES, и
залить всё обратно.
В частных случаях может потребоваться ещё править записи внутри dump'а,
если там вдруг окажутся недопустимые для кодировки символы.
> Я попробовал на 5-ой версии дамп сделать -- ошибка:
> mysqldump: Error 1194: Table 'sml_stat_hosts' is marked as crashed and
> should be repaired when dumping table `sml_stat_hosts` at row: 1746290
^^^^^^^^^^^^
Оно даже говорит, что надо сделать.
$ echo "repair table sml_stat_hosts extended;" | \
mysql -u root -p host1248
> Причем я пробовал эту таблицу починить через phpMyAdmin
А здесь может быть столько всего разного... Начиная, например, от
ограничений на время выполнения скрипта.
--
С уважением,
Николай Фетисов
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [Sysadmins] Кодировка при переходе с mysql4 на mysql5
2008-08-07 16:01 ` Nikolay A. Fetisov
@ 2008-08-07 17:13 ` Aleksey E. Birukov
2008-08-07 18:09 ` Nikolay A. Fetisov
2008-08-07 17:20 ` Aleksey E. Birukov
1 sibling, 1 reply; 9+ messages in thread
From: Aleksey E. Birukov @ 2008-08-07 17:13 UTC (permalink / raw)
To: ALT Linux sysadmin discuss
Nikolay A. Fetisov пишет:
А можно ли где сейчас найти 64bit-ную версию 4-ой MySQL?
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [Sysadmins] Кодировка при переходе с mysql4 на mysql5
2008-08-07 17:13 ` Aleksey E. Birukov
@ 2008-08-07 18:09 ` Nikolay A. Fetisov
2008-08-07 18:15 ` Aleksey E. Birukov
0 siblings, 1 reply; 9+ messages in thread
From: Nikolay A. Fetisov @ 2008-08-07 18:09 UTC (permalink / raw)
To: sysadmins
On Thu, 07 Aug 2008 21:13:39 +0400
Aleksey E. Birukov wrote:
> А можно ли где сейчас найти 64bit-ную версию 4-ой MySQL?
Под ALT? Насколько я понимаю, её и не было. Разверните контейнер с
32-битной системой. Получится проще и быстрее.
--
С уважением,
Николай Фетисов
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [Sysadmins] Кодировка при переходе с mysql4 на mysql5
2008-08-07 18:09 ` Nikolay A. Fetisov
@ 2008-08-07 18:15 ` Aleksey E. Birukov
2008-08-07 18:24 ` Aleksey E. Birukov
0 siblings, 1 reply; 9+ messages in thread
From: Aleksey E. Birukov @ 2008-08-07 18:15 UTC (permalink / raw)
To: ALT Linux sysadmin discuss
Nikolay A. Fetisov пишет:
> On Thu, 07 Aug 2008 21:13:39 +0400
> Aleksey E. Birukov wrote:
>
>
>> А можно ли где сейчас найти 64bit-ную версию 4-ой MySQL?
>>
>
> Под ALT? Насколько я понимаю, её и не было. Разверните контейнер с
> 32-битной системой. Получится проще и быстрее.
>
В быстродействии потеряю. Здесь это важно.
Нашел здесь
ftp://ftp.altlinux.ru/pub/distributions/archive/Sisyphus/2006/02/01/x86_64/RPMS.classic/
Оставил на "всякий случай".
Вроде, начало получаться с дампами (кодировка верная). Остановился на
заливании базы из дампа. Естественно, ошибки.
ERROR 1067 (42000) at line 608: Invalid default value for 'lang'
Что такого криминального в строке
`lang` char(1) NOT NULL default 'eng',
?
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [Sysadmins] Кодировка при переходе с mysql4 на mysql5
2008-08-07 18:15 ` Aleksey E. Birukov
@ 2008-08-07 18:24 ` Aleksey E. Birukov
0 siblings, 0 replies; 9+ messages in thread
From: Aleksey E. Birukov @ 2008-08-07 18:24 UTC (permalink / raw)
To: ALT Linux sysadmin discuss
Aleksey E. Birukov пишет:
> Вроде, начало получаться с дампами (кодировка верная). Остановился на
> заливании базы из дампа. Естественно, ошибки.
> ERROR 1067 (42000) at line 608: Invalid default value for 'lang'
> Что такого криминального в строке
> `lang` char(1) NOT NULL default 'eng',
> ?
char(3)
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [Sysadmins] Кодировка при переходе с mysql4 на mysql5
2008-08-07 16:01 ` Nikolay A. Fetisov
2008-08-07 17:13 ` Aleksey E. Birukov
@ 2008-08-07 17:20 ` Aleksey E. Birukov
1 sibling, 0 replies; 9+ messages in thread
From: Aleksey E. Birukov @ 2008-08-07 17:20 UTC (permalink / raw)
To: ALT Linux sysadmin discuss
Nikolay A. Fetisov пишет:
> Как обычно - понять, в чём проблема, и что нужно получить. Далее
> определиться с нужными шагами.
>
> В общем случае, надо получать dump надо в той же кодировке
> (неправильной!), которая указана в базе. Иначе умный MySQL будет
> выполнять неизвестно какие преобразования с непонятными последствиями.
>
> Затем в полученном dump'е надо переправить _записи_ о кодировке таблиц
> на правильные. Указать в заголовке dump'а правильный SET NAMES, и
> залить всё обратно.
>
> В частных случаях может потребоваться ещё править записи внутри dump'а,
> если там вдруг окажутся недопустимые для кодировки символы.
Я посмотрел на сервере, на котором я уже проделывал эту операцию.
Вот строки, которые относятся к кодировкам из дампа работающей базы.
/*!40101 SET NAMES utf8 */;
SET character_set_client = utf8;
) ENGINE=MyISAM AUTO_INCREMENT=2032 DEFAULT CHARSET=cp1251;
То есть единственное, что мне нужно переправить это
) ENGINE=MyISAM AUTO_INCREMENT=2032 DEFAULT CHARSET=utf8;
на ) ENGINE=MyISAM AUTO_INCREMENT=2032 DEFAULT CHARSET=cp1251;
Можно ли это сделать sql запросом, чтобы дампы не делать?
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [Sysadmins] Кодировка при переходе с mysql4 на mysql5
2008-08-07 15:45 [Sysadmins] Кодировка при переходе с mysql4 на mysql5 Aleksey E. Birukov
2008-08-07 16:01 ` Nikolay A. Fetisov
@ 2008-08-07 20:39 ` Aleksey E. Birukov
2008-08-08 12:46 ` [Sysadmins] Кодировка при переходе с mysql4 на mysql5 (кто шарит в sql?) Aleksey E. Birukov
1 sibling, 1 reply; 9+ messages in thread
From: Aleksey E. Birukov @ 2008-08-07 20:39 UTC (permalink / raw)
To: ALT Linux sysadmin discuss
Aleksey E. Birukov пишет:
> Есть файлы базы из /var/lib/mysql/db/host1248. База создавалась на
> mysql версии 4. Соответственно на версии 5. Проблема с кодировкой. Как
> можно ее решить?
>
> На одном сервере я добавлял init-connect='SET NAMES cp1251' в my.cnf а
> потом заливал дамп, сделанный на 4-ой версии.
>
> Есть ли более оптимальный способ?
mysqldump --add-drop-table -uhost1420 -p host1420|sed
's/CHARSET=utf8/CHARSET=cp1251/'|sed 's/SET NAMES utf8/SET NAMES
cp1251/'|mysql -utest -p test
Если вылезают ошибки:
ERROR 1067 (42000) at line 608: Invalid default value for 'lang'
mysqldump: Got errno 32 on write
Разыскиваем их вот так:
# mysqldump --add-drop-table -uhost1420 -p host1420|sed '608q;d'
и решаем по обстоятельствам.
Такое решается через |OPTIMIZE TABLЕ|
(можно через phpMyAdmin)
mysqldump: Error 1194: Table 'sml_stat_hosts' is marked as crashed and
should be repaired when dumping table `sml_stat_hosts` at row: 1746290
Может вылезти и такое. База больше 2Гб -- может поэтому. Как решать не
разбирался.
mysqldump: Error 2013: Lost connection to MySQL server during query when
dumping table `sml_stat_hosts` at row: 9537
Вроде все получилось. Ужас, конечно :)
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [Sysadmins] Кодировка при переходе с mysql4 на mysql5 (кто шарит в sql?)
2008-08-07 20:39 ` Aleksey E. Birukov
@ 2008-08-08 12:46 ` Aleksey E. Birukov
0 siblings, 0 replies; 9+ messages in thread
From: Aleksey E. Birukov @ 2008-08-08 12:46 UTC (permalink / raw)
To: ALT Linux sysadmin discuss
Aleksey E. Birukov пишет:
> Aleksey E. Birukov пишет:
>> Есть файлы базы из /var/lib/mysql/db/host1248. База создавалась на
>> mysql версии 4. Соответственно на версии 5. Проблема с кодировкой.
>> Как можно ее решить?
>>
>> На одном сервере я добавлял init-connect='SET NAMES cp1251' в my.cnf
>> а потом заливал дамп, сделанный на 4-ой версии.
>>
>> Есть ли более оптимальный способ?
> mysqldump --add-drop-table -uhost1420 -p host1420|sed
> 's/CHARSET=utf8/CHARSET=cp1251/'|sed 's/SET NAMES utf8/SET NAMES
> cp1251/'|mysql -utest -p test
>
А можно ли воплотить это не с текстовым файлом базы, а непосредственно
sql командами? Да еще, чтобы mysql не умничал, пытаясь перекодировать
самостоятельно.
^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2008-08-08 12:46 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2008-08-07 15:45 [Sysadmins] Кодировка при переходе с mysql4 на mysql5 Aleksey E. Birukov
2008-08-07 16:01 ` Nikolay A. Fetisov
2008-08-07 17:13 ` Aleksey E. Birukov
2008-08-07 18:09 ` Nikolay A. Fetisov
2008-08-07 18:15 ` Aleksey E. Birukov
2008-08-07 18:24 ` Aleksey E. Birukov
2008-08-07 17:20 ` Aleksey E. Birukov
2008-08-07 20:39 ` Aleksey E. Birukov
2008-08-08 12:46 ` [Sysadmins] Кодировка при переходе с mysql4 на mysql5 (кто шарит в sql?) Aleksey E. Birukov
ALT Linux sysadmins discussion
This inbox may be cloned and mirrored by anyone:
git clone --mirror http://lore.altlinux.org/sysadmins/0 sysadmins/git/0.git
# If you have public-inbox 1.1+ installed, you may
# initialize and index your mirror using the following commands:
public-inbox-init -V2 sysadmins sysadmins/ http://lore.altlinux.org/sysadmins \
sysadmins@lists.altlinux.org sysadmins@lists.altlinux.ru sysadmins@lists.altlinux.com
public-inbox-index sysadmins
Example config snippet for mirrors.
Newsgroup available over NNTP:
nntp://lore.altlinux.org/org.altlinux.lists.sysadmins
AGPL code for this site: git clone https://public-inbox.org/public-inbox.git