Архив

Статии по ключова дума: ‘Sql’

Upgrade на Wordpress от shell.

23 октомври, 2009 Няма коментари

Вместо да обяснявам ред по ред предоставям простo  sh скриптче което прави всичко:

#!/bin/sh
mysqldb="vashata_baza";
mysqluser="vashiqt_user";
mysqlpass="vashata_parola";
wp_dir="/var/yourblog.com/public_html/";
cd /tmp/
echo "Backup your Wordpress DB: $mysqldb";
mysqldump -u$mysqluser -p$mysqlpass $mysqldb > /tmp/wordpress_blog.sql
echo "Backup your Old Wordpress";
#cp -Rp $wp_dir /tmp/wordpress_blog_backup/
echo "Download new Wordpress";
wget -q http://wordpress.org/latest.zip
unzip /tmp/latest.zip
echo "Replace old Wordpress files";
cp -avr /tmp/wordpress/* $wp_dir
echo "Delete temp files";
rm -fr /tmp/latest.zip /tmp/wordpress/
echo "Visit http://yourblog.com/wp-admin/upgrade.php"
echo "Click: Upgrade WordPress Database";
echo "Your Wordpress is updated successfully"

Конструкции на SQL за поддръжка на таблици в MySQL

14 октомври, 2009 Няма коментари

MySQL притежава няколко конструкции на SQL за поддръжка на таблици: CHECK TABLE за проверка на целостта им, REPAIR TABLE за извършване на поправка, ANALYZE TABLE за анализ и OPTIMIZE TABLE за оптимизиране.  Следва малко информация за всяка от конструкциите за поддръжка на таблици в MySQL:

CHECK TABLE

Конструкцията CHECK TABLE извършва проверка за целостта на структурата и съдържанието на съответната таблица. Тя е приложима и за MyISAM, и за InnoDB. За таблиците от тип MyISAM се осъществява също и актуализиране на статистиката на индексите. Ако дадената таблица с изглед, с CHECK TABLE се проверява дефиницията му. Ако данните, изведени от CHECK TABLE показват наличие на проблем с таблицата, тя трябва да бъде поправена.

REPAIR TABLE

Конструкцията REPAIR TABLE служи за коригиране на проблеми в таблица, която е повредена. Тя е приложима само за таблици от тип MyISAM. Можете да конфигурирате автоматична поправка на таблиците на MyISAM.

Пример: repair table dhstudio

ANALYZE TABLE

Конструкцията ANALYZE TABLE служи за актуализиране на таблица с информация за разпределението на ключовите стойности в нея. Тя се използва от оптимизатора за избор на по- подходящи планове за изпълнението на заявки. Тази конструкция работи с таблици на MyISAM и InnoDB.

Пример: analyze table dhstudio

OPTIMIZE TABLE

Конструкцията OPTIMIZE TABLE служи за "изчистване" на таблици от тип MyISAM чрез дефрагментирането им. Резултатът е повторното разпределяне на неизползваното пространство, получено в резултат от изтриване и актуализации, както и обединяване на записите, които са били разделени и съхранени разпокъсано. OPTIMIZE TABLE се използва също така за сортиране на индексните страници, ако не са подредени, както и за актуализиране на статистиката за индексите.
OPTIMIZE TABLE работи и с таблици на InnoDB, но ги пренасочва към конструкцията ALTER TABLE, която ги изгражда наново. По този начин се актуализира статистиката за индексите и се освобождава място в клъстерния индекс.

Пример:  optimize table dhstudio

Ако искате да разберете кои таблици трябва да оптимизирате изпълнете следното:

show table status where Data_free!=0;

По този начин ще фрагментирате таблиците които се нуждаят от това, а не тези които са фрагментирани.

Проблем с MySQL encoding

Днес трябваше да направя Upgrade на едно старо приложение от преди доста години, обаче преди като съм го правил съм допуснал грешка.

Забравил съм да сложа encoding на таблиците и е останал подразбиращият се: latin1. С него кирилицата си работи, но не напълно коректно. Проблема беше че не може да сортира правилно по азбучен ред (напълно логично е все пак, друга таблица).

За целта за да видя какво пише като се свържа трябва да изпълня: SET character_set_client = utf8; и всичко се фиксва. Сега обаче възнамерявам да фиксна това.

1. Експортвам ставара инфо: mysqldump -uroot -p --compatible=mysql40 radiolist > d1.sql

2. Коментирам всички по- долу изброени редове:

SET @saved_cs_client     = @@character_set_client;
SET character_set_client = utf8;
SET character_set_client = @saved_cs_client;

Hint: Примерен коментар: /* primeren komentar */

3. След всяко създаване на таблица добавям:
DEFAULT CHARSET=cp1251
Пример:

CREATE TABLE `lists` (
`art_id` int(5) unsigned NOT NULL auto_increment,
….
) TYPE=MyISAM AUTO_INCREMENT=562525 DEFAULT CHARSET=cp1251;

4. Oтварям файла с Word и го записвам с Encoding: Windows cp1251.(Интересното беше, че нещо ми се закучи с iconv както и да е).

5. Импортирам новата база с коригирам encoding:

mysql -uroot -p radiolist --default-character-set=cp1251 < word_test.sql

6. Това е всичко :)