Както вече писах, покрай курса за MySQL на salle инсталирах на debian.fmi.uni-sofia.bg MySQL 4.0 от Dotdeb. Преди седмица обаче бяха изненадан с обновяване на пакета до MySQL 4.1.7, като на всичкото отгоре открих това няколко дена след upgrade-а :-( Теорията е едно, а практиката -- друго. Мислех, че най-големият ми проблем ще са многокодовите и многоезикови възможности на 4.1, но всъщност с тях не се появи проблем. Сериозен проблем се появи с новия формат на паролите в MySQL 4.1. Създадох няколко потребителя и те не можаха да се логнат през phpMyAdmin-а на Дебиан.ФМИ, а през команден ред става... Та така открих, че съм upgrade-нал до 4.1. Добре че просто паролите трябва да се държат в стария формат и няма проблеми.
В тая история обаче зоркото око ще открие две подозрителни неща: защо i18n играчките не са успели да съсипят PHP приложенията и защо php-то, което също е от Dotdeb, има проблем с новите пароли. Отговорът се оказа много прост: PHP използва копие на клиентската библиотека на MySQL 3, за да се свърже с базата данни, затова просто няма прекодирания, които да превърнат базите ми данни, които сървърът си мисли, че са в колация latin_swedish_ci. Обратната страна е, че клиентската библиотека на MySQL 3 нищо не разбира от новите пароли.
Това е същата библиотека, за която се вдигна шум, че няма да е включена в PHP5. Не че PHP5 не поддържа MySQL, а просто при компилиране на PHP5 трябва да са вече инсталирани и dev библиотеките на MySQL.
PHP5 включва библиотеката mysqli, с която могат да се използват всички благини в MySQL 4.1. Явно всичко ново трябва да използва mysqli, което пък обаче е само за PHP5, което май още не е стабилизирано...
Някой ден ще трябва да изненадам потребителите на debian с PHP5 :->
Обмисляйки тази малка статия, мислех как не обичам когато има проблем да питам във форуми. Вместо това си губя часове да чопля и търся в Google какво са питали и отговаряли другите. Струва ми се, че такива статии възстановяват "равновесието в Силата" и така все пак става някаква обмяна, за разлика от случая, когато само се обаждам за да отговоря на нещо в някой форум.
Comments
(без заглавие)
Доколкото съм наясно mysql модула на PHP 5 може да се компилира с по-нова клиентска библиотека на MySQL, така, че например libmysqlclient от 4.1 може да се използва от ext/mysql и би трябвало да върви. Както например може да имаш ext/mysql и ext/mysqli накуп без проблеми като просто им покажеш да използват 4.1 libmysqlclient. Свързването към новата версия на библиотеката беше проблем преди, когато MySQL бяха само под GPL и комерсиален лиценз. В момента има изключение за проекти с отворен код, което бе направено специално заради PHP, чийто лиценз е BSD подобен (Apache подобен). Ако решиш да се пробваш да си прекомпилираш PHP-то, ще се радвам да чуя какъв е бил резултата.
Успех!
(без заглавие)
Да, PHP5 би оправил проблема с паролите, обаче ми се струва, че ще стане голямо оплескване с прекодиранията. Трябва да пробвам. Трябва да се науча как се преобразува база данни с определено кодиране от MySQL 3/4.0 към 4.1. Надявам се dump, sed s/1251/UTF8/, load да свърши работа. И тая операция трябва да се извърши върху много бази данни с различни кодирания.
Друг кофти "дефект" е, че новите версии на phpMyAdmin се опитват да прекодират и не можеш просто със смяна на кодирането на четеца да оправиш нещата.
(без заглавие)
Подробности за прехода към 4.1: http://dev.mysql.com/doc/mysql/en/Upgrading-from-4.0.html
(без заглавие)
Може да компилираш и PHP 4 с нова версия на libmysqlclient. Тогава ако имаш сайтове, които използват версия 4 и искат да достъпват 4.1.х на MySQL, би трябвало да работи.
(без заглавие)
Забравих. Може да пробваш графичните инструменти за MySQL, които правят. Бях на едно представяне и просто ми падна ченето до пода какво могат Браузъра на заявки и Администратора. Водещият разработката показваше и показваше, времето минаваше и той пак показваше. Плюс това 4.1.х поддържа SSL, така, че през несигурна мрежа може да има някаква сигурност. Също така даден потребител може да бъде ограничен да се закача само през SSL (доколкото си спомням).
(без заглавие)
В такъв случай непременно ще пробвам прекомпилация на PHP4 с библиотеката на MySQL 4.1. Благодаря за помощта!