пятница, 19 сентября 2008 г.

MySQL, кодировка и вопросики вместо русских букв

В предыдущей статье о русификации MySQL было написано как заставить mysql корректно работать с кодировкой cp1251.

Но как быть если предположим есть два сервера и на одном из них mysql в cp1251 а на другом - в стандартной кодировке?

Для решения этой проблемы предлагаем два очень простых скрипта - первый создает дампы всех баз, за исключением системных, а второй - заменяет существующие базы с неправильной кодировкой на правильную. Скрипт предназначен прежде всего для WHM/cPanel но в принципе пойдет на любых серверах.

Сначала создадим архив с дампами баз mysql с помощью первого скрипта:


for i in `mysqlshow | grep -v + | grep -v '| Databases |' | cut -d ' ' -f2 | grep -v horde| grep -v mysql | grep -v eximstats`; do mysqldump -f --compatible=mysql40 $i > $i.sql; done; tar czf dump1251.tgz *.sql; rm *.sql


В результате будет создан файл dump1251.tgz - архив со всеми дампами sql в нормальной кодировке. Его необходимо перенести на другой сервер и восстановить с помощью второго скрипта:

for i in `ls *.sql`;do b=`basename $i .sql`;yes | mysqladmin drop $b; mysqladmin create $b; mysql --default-character-set=cp1251 $b


После этого вместо вопросительных знаков появятся русские буквы. Приятной работы :)

Комментариев нет:

Отправить комментарий