Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z "polskimi literkami"
Forum PHP.pl > Forum > Bazy danych > MySQL
mike22
Witam,

Jestem zupełnie nowy w php i MySQL i mam taki "mały" problemik z "polskimi" literkami.
Podczas próby zapisu danych z formularza pojawia się błąd:
Data too long for column 'title' at row 1

Kolumna nie ma żadnego znaczenia. Wystarczy, że we wprowadzonym tekście pojawi się "polska" literka.

Na moim środowisku wszystko działa normalnie. Po wrzuceniu na serwer przestaje działać (na serwerze mam prawa tylko do ftp i to w ograniczonym zakresie) .

Przypuszczam, że występuje problem ze stroną kodową MySQL. Tyle, że administrator serwera nie zna się (lub przynajmniej tak twierdzi) na MySQL i php, a instalację zrobił defaultową.

Strasznie mi się spieszy. Czy ktoś mógłby mi pomóc?

Z góry bardzo dziękuję!!
mariuszn3
Czy serwer MySQL wie w jakim kodowaniu mu dane przesyłasz (zapytanie SET NAMES) ?
Jakie kodowanie masz ustawione na tabeli?
mike22
Próbowałem na swoim stanowisku lokalnym. Nie ma znaczenia jak ustawię kodowanie w bazie - wszystko działa.
Może problem w tym, że ja mam MySQL 4.1 a na serwerze jest 5.0?
A może problem leży gdzieś w konfiguracji php na serwerze (przychodzą mi do głowy problemy z łączeniem ciągów znaków przy polskich literkach)?
Ratujcie...... :-)
mariuszn3
Cytat(mike22 @ 4.08.2006, 15:01 ) *
Próbowałem na swoim stanowisku lokalnym. Nie ma znaczenia jak ustawię kodowanie w bazie - wszystko działa.
Może problem w tym, że ja mam MySQL 4.1 a na serwerze jest 5.0?

Co to znaczy próbowałem na stanowisku lokalnym.. (w konsoli, na jakim systemie?) Co to znaczy wszystko działa.. polskie literki wyświetlają się poprawnie?
Mówiąc,że na serwerze jest 5.0 masz jak rozumiem na myśli wersję php?
Czy wysyłasz do MySQL zapytanie informujące o tym w jakim kodowaniu dane będzie otrzymywać?
Był tu jeden taki temat dokładnie z Twoim problemem, w którym wszystko było dokładnie wyjaśnione, poszperaj i poczytaj.. bo nie ma sensu drugi raz tego samego wklepywać.
mike22
Cytat(mariuszn3 @ 4.08.2006, 16:09 ) *
Co to znaczy próbowałem na stanowisku lokalnym.. (w konsoli, na jakim systemie?) Co to znaczy wszystko działa.. polskie literki wyświetlają się poprawnie?
Mówiąc,że na serwerze jest 5.0 masz jak rozumiem na myśli wersję php?
Czy wysyłasz do MySQL zapytanie informujące o tym w jakim kodowaniu dane będzie otrzymywać?
Był tu jeden taki temat dokładnie z Twoim problemem, w którym wszystko było dokładnie wyjaśnione, poszperaj i poczytaj.. bo nie ma sensu drugi raz tego samego wklepywać.



Założenia:
skrypty php przygotowuję na Windows XP, MySQL 4.1 i php 5
Witryna ma działać na Windows 2003 Server, MySQL 5.0 i php 5

Problem:
Nie chodzi o to, że znaki się źle wyświetlają, tylko o to, że "polskich" znaków nie potrafię wprowadzić INSERT-em do bazy danych MySQL, bo pojawia się błąd "data too long".
mariuszn3
Upewnij się, że przed wysyłaniem danych przesyłasz na serwer MySQL informację o kodowaniu znaków w jakim one będą przesyłane.
Błąd najprawdopodobniej wynika z tego.. że MySQL zakłada że pracujesz w jakimś tam kodowaniu (przyjmuje kodowanie nie zgodne z faktycznym), próbuje to przekonwertować na domyślne kodowanie tabeli i tu się wykrzacza.. po prostu binarnie Twoje kodowanie nie odpowiada temu, które MySQL przyjmuje.. Wysłanie SET NAMES powinno rozwiązać problem... tak ja to rozumiem
mike22
Masz rację! Chylę czoła!!!

W swojej naiwności sądziłem, że wykrzaczanie na głupim konwertowaniu raczej nie wchodzi w grę.
Zwłaszcza, że strony mam na ISO 8859-2 a SHOW CREATE DATABASE ... pokazuje na serwerze
CREATE DATABASE `auditors` /*!40100 DEFAULT CHARACTER SET latin2 */

Na swoim komputerze mam kompletną niezgodność stron kodowych i jest ok. Na serwerze teoretycznie było zgodne i się sypało!

Dzięki, dzięki i jeszcze raz dzięki!
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2024 Invision Power Services, Inc.