Re: MySQL 4.1 + PHP 4.4.0 = brak polskich znaków
On Sun, Nov 06, 2005 at 07:01:48PM +0100, Adam Byrtek wrote:
>On Sun, Nov 06, 2005 at 05:54:32PM +0100, Jacek Politowski wrote:
>> Najprawdopodobniej po wykonanym dziś upgrade PHP4 (z 4.3.10 do 4.4.0)
>> i Apache (1.3.33 do 1.3.34) zniknęły mi polskie znaki w zawartości
>> stron generowanej z bazy (zamiast nich widzę znaki zapytania).
>Czy nie zaktualizowałeś też czasem MySQL z 4.0 na 4.1? Te wersje
>znacznie różnią się obsłudze locale, a migracja nie jest
>,,bezbolesna''.
Aktualizowałem jakiś czas temu, tak jak pisałem jestem na 90%
przekonany, że po zmianie mysqla (18-go października, jak mi wynika z
logu aptitude) nie było problemów z PLiterkami.
> Więcej znajdziesz tutaj:
To też czytałem. Ale najprawdopodobniej jeszcze nie zrozumiałem
dokładnie i nie udało mi się powiązać z obecną sytuacją.
Czytałem także:
http://dev.mysql.com/doc/refman/4.1/en/upgrading-from-4-0.html
>Spróbuj na początku skryptu, z którym są problemy wykonać zapytanie
>,,SET CHARACTER SET latin2'' i napisz, czy pomogło.
Trochę dużo ich.
phpBB, jakieś zabawy znajomych, trochę moich zabaw.
Nie każdy z nich pisany sensownie (czyt. wiele połączeń, w różnych
dziwnych miejscach).
Jak widzę, SET CHARACTER SET ustawia zmienne dla sesji, co
najwyraźniej nie rozwiąże problemu (zawsze gdzieś można coś
przeoczyć).
Na razie problemu szukam po stronie serwera, bo spodziewam się, że
jednak tam on rezyduje i da się przywrócić poprawne funkcjonowanie,
bez modyfikacji skryptów.
>Prześlij też to,
>co zwraca SHOW VARIABLES, a dotyczy zestawu znaków.
mysql> show variables like "%char%";
| Variable_name | Value
| character_set_client | latin2
| character_set_connection | latin2
| character_set_database | latin2
| character_set_results | latin2
| character_set_server | latin2
| character_set_system | utf8
| character_sets_dir | /usr/share/mysql/charsets/
>> Co ciekawe - phpMyAdmin także nie ma problemu z PLiterkami -- zarówno
>> przy wybraniu dla niego locale UTF8, jak i iso8859-2 (przy logowaniu)
>> -- wyświetla PLiterki poprawnie.
Źle mówię o ustawieniu locale iso -- tego nie da się po prostu zrobić.
Mimo ustawienia iso przed logowaniem, po zalogowaniu jest utf8 (i brak
możliwości wyboru czegokolwiek poza utf8)
To naprowadziło mnie na dalszy trop. phpMyAdmin daje mi takie
wartości:
Zmienna Wartość sesji Wartość globalna
character set client utf8 latin2
character set connection utf8 latin2
character set database latin2 latin2
character set results utf8 latin2
character set server latin2 latin2
character set system utf8 utf8
>W MySQL 4.1 zestaw znaków (i collation) można ustawiać per baza,
>tabela i kolumna. Sprawdzałeś wszystkie te możliwości?
Bazy zakładane były jeszcze w MySQL 4.0 i nie robiłem z nimi nic przy
upgrade. Wszystkie bazy, które sprawdziłem twierdzą, że są latin2
(tabele i pola także)
--
Jacek Politowski
Reply to: