Слизане до MySQL 4.0

След предвиждането за проблеми с MySQL 4.1, действителното сблъскване с тези проблеми и окончателното им разнищване, най-накрая успях да сваля всичко от версия 4.1 към 4.0 :-)

Оказа се, че все пак има страница с инструкции за сваляне към 4.0. Просто трябвало да се направи mysqldump --compatible=mysql40 и после да се зареди дъмпът в 4.0. Естествено, не мина така лесно. Представете си UTF-8 текст, който е взет за CP1251 и затова прекодиран към UTF-8. Нещо като cat UTF-8.txt | iconv -f CP1251 -t UTF-8. Не можах да се преборя адекватно с този проблем, пък и нямах голямо желание, затова подходих по друг начин. Направих mysqldump от друга машина с 4.0 на базите данни от 4.1, избягвайки по този начин прекодиранията. Изглежда обаче сървърът има влияние върху SQL кода, та се появиха разни CHARSET и COLLATION, а също и някакви нови свойства на TIMESTAMP. Тъй че приложих следните два филтъра (деца, не правете това вкъщи):

sed 's,\(default charset\|collate\)\( \|=\)[a-z0-9_]*,,gi\' 
sed 's,default current_timestamp on update current_timestamp,,gi'

Като изключим това, имаше и една ръчна поправка в описанието на една таблица. Имаше колона AUTO_INCREMENT, която в един от INSERT-ите се задаваше като 0, което обаче е специална стойност, която означава "вземи следващата стойност", и се превръщаше автомагически в 1, което вече създаваше конфликт със следващия INSERT. Така че просто разкарах това AUTO_INCREMENT от конкретната проблемна таблица :-)

Сега остава просто да чакам някой да се обади за евентуален проблем...

Tags: