pict

 

Откат информационной базы и трудность с шифровками

Рубрика: PHP кодинг
Раздел: MySQL

дата:23-06-2009

db_restore

Сейчас я желаю поведать об 1 граблях на каковые сам не так давно наступил.

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

А обстановка была таковая. Я написал заметку «jqGrid: редактирование табличных данных при помощи inline редакторов» и создал демонстрационную страницу.

Для того, чтоб таблица не была бессодержательный, я создал дамп моей локальной базы и через phpMyAdmin залил его в базу на сервере.

При всем этом практически никаких трудностей с шифровками не появлялось вообщем. Т.е. у меня повсеместно была указана utf-8, она и применялась.

Здесь встает рядовая трудность.

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

Потому я сделал задачку для Cron, каковая временами выполняет команду

  1. mysql –user=db_user –password=db_pass db_name < /path_to_dump_file/dump.sql

Т.е. просто возобновляет базу из файла с дампом.

И через некое время я отмечаю (поточнее мне сообщают в комментах, спасибо Big_Shark), что часть записей в таблице отображается кракозябрами.

Сначала я поразмыслил, что дело в некотором бразузере, но оказалось, что и в FireFox, и в Opera, и в Safari, и в IE практически никаких трудностей с шифровками нет.

Ну и в всяком случае данные на сервер отправляются AJAX запросом, ну а в них постоянно употребляется UTF-8.

Сообразил в чем дело я лишь опосля того как предпринял попытку на локальном компе вернуть базу из дампа (через командную строчку). Как говориться, mysql необходимо очевидно показывать шифровку.

Чтобы достичь желаемого результата в командную строчку добавляем параметр --default_character_set=utf8

  1. mysql –user=db_user –password=db_pass –default_character_set=utf8 db_name < /path_to_dump_file/dump.sql

На локальном сервере данный параметр принял решение делему, но на сервере хостера – нет.

Потому в начало дампа базы я добавил запрос

  1. SET CHARACTER SET utf8;

И он вполне принял решение делему.

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

Happy coding!

<<< Предыдущая статья

 

Дружественные сайты:
Камины дровяные как символ благосостояния