|
Волгоград Linux User Group |
| Организована 23 ноября 2002 года | |
|
Как мы чинили volgograd.lug.ruпри ремонте wackowiki версии 3.5 которая прослужила нам больше 5 лет. обнаружилась небольшая проблема с mysql который все это время не стоял на месте, а развивался и научился работать с кодировками. итак.было mysql 4.0 стало mysql 5.0.51 данные в базе находились в кодировке cp1251 с charset в базе данных и в таблицах был полный бардак (видимо потому, что при создании этой базы данных и этих таблиц mysql еще мало знал о кодировках, а потом mysql похоже еще и апгрейдили на хостинге, и он в итоге на момент разборок имелась база данных с прописанными collate и charsets в новая система с локалью utf8 на которой все нужно было развернуть к старой системе доступа не было. была куча бакупов от mysqldump но практически бесполезных, так как при этих бакупах побилась кодировка и важные «системные» символы (вокруг которых завязана wackowiki) оказались утерянны. хорошо что удалось раздобыть копию старой базы со старого хостинга (файлы что лежат в /var/lib/mysql/db/имя_базы) никакие пляски со сменой кодировки средствами mysql, ALTER TABLE и тп не помогли, вместе со сменой charset и collation mysql менял и данные в таблице перекодировал их в кракозяблы и соответственно убивал «волшебные символы» так их рас так. после долгих копаний, чтения # получаем структуру таблиц mysqdump -- при использовании -- как советуется тут: данные у меня превращались в вопросики #правим кодировки создания таблиц в файле db.sql vim db.sql (мне нужно было сделать всё в cp1251) #создаем новую базу данных с правильной кодировкой mysql >charset cp1251; >create database new_db; #создаем структуру таблиц в новой базе из нашего файла db.sql mysql new_db < db.sql #получаем пустую базу с правильными кодировками. #выключаем mysql и копируем в нее «правильные» файлы с данными service mysqld stop cd old_db for i in *.MYD; do cp -af $i ../new_db/ ; done # и, самое главное, пересоздаем индексы и чиним базу new_db:: cd new_db myisamchk -o *.MYI # теперь можно запустить mysqld и проверить получилось ли чудо service mysqld start PS cp1251_bin бинарная сортировка (по ASCII кодам) cp1251_general_ci без учета регистра cp1251_general_cs с учетом регистра полезные ссылки: |
|
|
Powered by
|