W dniu 22.03.2012 08:13, jlc@tlen.pl napisał(a):
na jednej z maszyn mam nastepujacy problem lms-teryt -m DBD::mysql::st execute failed: Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation '=' at /usr/sbin/lms-teryt line 659. DBD::mysql::st execute failed: Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation '=' at /usr/sbin/lms-teryt line 659. czy ktos wie co jest nie tak
Czas zrobić porządek w Twojej bazie mysql i ustawić kodowanie znaków na utf8 dla wszystkich tabel.
czy wam również teryt merge nie znajduje lokalizacji z polskimi znakami?
mam ulicę Żeromskiego, Piłsudskiego i niestety skrypt tego nie znajduje :/ ręcznie jak wyszukuję w bazie teryt to jak najbardziej te ulice się znajdują. Jak wybiorę lokalizację z bazy teryt, zapiszę, pozostawię wpisany ciąg lokalizacji z teryt, odznacze ptaszkiem baza teryt, to też mi nie znajduje :(
W dniu 22.03.2012 11:16, Marcin napisał(a):
czy wam również teryt merge nie znajduje lokalizacji z polskimi znakami?
mam ulicę Żeromskiego, Piłsudskiego i niestety skrypt tego nie znajduje :/ ręcznie jak wyszukuję w bazie teryt to jak najbardziej te ulice się znajdują. Jak wybiorę lokalizację z bazy teryt, zapiszę, pozostawię wpisany ciąg lokalizacji z teryt, odznacze ptaszkiem baza teryt, to też mi nie znajduje :(
Masz bazę mysql? Na pewno wszystkie tabele mają ustawione kodowanie utf8?
W dniu 22.03.2012 11:25, Marcin napisał(a):
W dniu 22 marca 2012 11:17 użytkownik Tomasz Chiliński <tomasz.chilinski@chilan.com [1]> napisał:
Masz bazę mysql? Na pewno wszystkie tabele mają ustawione kodowanie utf8?
tak, mysql. kodowanie mam utf8_polish_ci
Na pewno dla wszystkich tabel?
W dniu 22 marca 2012 11:35 użytkownik Tomasz Chiliński < tomasz.chilinski@chilan.com> napisał:
tak, mysql. kodowanie mam utf8_polish_ci
Na pewno dla wszystkich tabel?
już tak, miałem w nodes utf8_general_ci, ale zmieniłem na _polish_ci.
ale nadal nie znajduje np. Piłsudskiego, pomijawszy fakt że dla mojej miejscowości nie ma ulicy 'Żwirki i Wigury"
W dniu 22.03.2012 11:39, Marcin napisał(a):
W dniu 22 marca 2012 11:35 użytkownik Tomasz Chiliński <tomasz.chilinski@chilan.com [1]> napisał:
tak, mysql. kodowanie mam utf8_polish_ci
Na pewno dla wszystkich tabel?
już tak, miałem w nodes utf8_general_ci, ale zmieniłem na _polish_ci. ale nadal nie znajduje np. Piłsudskiego, pomijawszy fakt że dla mojej miejscowości nie ma ulicy Żwirki i Wigury"
Wersja lms-teryt z dzisiaj? Jeśli ulica nazywa się w teryt np. Aleja Piłsudskiego to ma prawo nie znajdować po skrócie Piłsudskiego, bo nie możemy szukać po skróconej nazwie, ponieważ same nazwisko patrona nie wystarczy do jednoznacznego odszukania w bazie TERYT. Przykładowo może być tak: Piłsudskiego Józefa Piłsudskiego Bronisława
W dniu 22 marca 2012 11:45 użytkownik Tomasz Chiliński < tomasz.chilinski@chilan.com> napisał:
Wersja lms-teryt z dzisiaj? Jeśli ulica nazywa się w teryt np. Aleja Piłsudskiego to ma prawo nie znajdować po skrócie Piłsudskiego, bo nie możemy szukać po skróconej nazwie, ponieważ same nazwisko patrona nie wystarczy do jednoznacznego odszukania w bazie TERYT. Przykładowo może być tak: Piłsudskiego Józefa Piłsudskiego Bronisława
niestety, muszę wpisać pełną nazwę: "Miasto, ul. Piłsudskiego Marszałka Józefa 16c". Tylko w takiej postaci znajduje
W dniu 22 marca 2012 11:45 użytkownik Tomasz Chiliński < tomasz.chilinski@chilan.com> napisał:
Wersja lms-teryt z dzisiaj?
a co powiesz o nazwie ulicy: "XX-lecia" ?? za cholere nie chce mi się to zwalidować :( ręcznie tak, wybiera się miasto, XX-lecia. po ręcznym wybraniu wypisywany jest ciąg: Miasto, al. XX-lecia 34a ale jak odznaczę bazę teryt i zrobę mergę to niestety mam not found :(
AP Młyn 1N (1440) Miasto, al. XX-lecia 34a: not found
any idea?
W dniu 22.03.2012 18:16, Marcin napisał(a):
W dniu 22 marca 2012 11:45 użytkownik Tomasz Chiliński <tomasz.chilinski@chilan.com [1]> napisał:
Wersja lms-teryt z dzisiaj?
W międzyczasie wprowadziłem dziś poprawkę, która daje szansę na merge dla ulic o skróconej postaci - działa, gdy skrócona nazwa ulicy dla danego miasta jest jednoznaczna.
a co powiesz o nazwie ulicy: "XX-lecia" ?? za cholere nie chce mi się to zwalidować :( ręcznie tak, wybiera się miasto, XX-lecia. po ręcznym wybraniu wypisywany jest ciąg: Miasto, al. XX-lecia 34a ale jak odznaczę bazę teryt i zrobę mergę to niestety mam not found :(
AP Młyn 1N (1440) Miasto, al. XX-lecia 34a: not found
Ciekawe czy w wyrażeniu regularnym dopasowującym się do potencjalnej nazwy ulicy zawarty jest znak "-" ;-)
any idea?
Można by było sobie zadać pytanie po co ta cała dyskusja skoro już po raportach UKE? Przypominam, że niedługo nastąpić rozbicie lokalizacji klienckich na oddzielna pola address, house i flat. Przyda się zatem obecne przedyskutowanie tego zagadnienia, bo dzięki temu będziemy mieli lepszej jakości aktualizację schematu bazy danych!
W dniu 22 marca 2012 18:59 użytkownik Tomasz Chiliński < tomasz.chilinski@chilan.com> napisał:
AP Młyn 1N (1440) Miasto, al. XX-lecia 34a: not found
found :( Ciekawe czy w wyrażeniu regularnym dopasowującym się do potencjalnej nazwy ulicy zawarty jest znak "-" ;-)
hmm, może nie być
any idea?
Można by było sobie zadać pytanie po co ta cała dyskusja skoro już po raportach UKE?
hmm, z tego co widać nie wszyscy wysłali a ja jestem jednym z nich :)
Przypominam, że niedługo nastąpić rozbicie lokalizacji klienckich na oddzielna pola address, house i flat. Przyda się zatem obecne przedyskutowanie tego zagadnienia, bo dzięki temu będziemy mieli lepszej jakości aktualizację schematu bazy danych!
correct
W dniu 22 marca 2012 18:59 użytkownik Tomasz Chiliński < tomasz.chilinski@chilan.com> napisał:
Ciekawe czy w wyrażeniu regularnym dopasowującym się do potencjalnej nazwy ulicy zawarty jest znak "-" ;-)
oj to nie jest kwestia znaku "-". Dodałem printa przed wykonaniem zapytań do bazy i zmienne są poprawne. kwestia jest w zapytaniu/zwracanych danych. "print "printuje $city= $city, $street= $street $house= $house \n"; # find location_street and/or location_city IDs if ($street && $city) { $street_get->execute($street, $street, "$city%"); my $srows = $street_get->fetchall_hashref('id'); if (scalar(keys %$srows) == 1) { foreach my $srow (keys %$srows) { $street_id = $srows->{$srow}->{'id'}; $city_id = $srows->{$srow}->{'cityid'}; } } else { $city_get->execute($street); if (my $srow = $city_get->fetchrow_hashref()) { $city_id = $srow->{'id'}; $orig_location =~ s/$city, //; } } } elsif ($city) { $city_get->execute($city); if (my $crow = $city_get->fetchrow_hashref()) { $city_id = $crow->{'id'}; } } # update node location if ($street_id || $city_id) { print "found\n" if not $quiet; $update->execute($city_id, $street_id, $house, $flat, $orig_location, $row->{'id'}); } else { print "not found\n" if not $quiet; } } "
root@testsql:/var/www/lms/bin# ./lms-teryt -m|egrep -i "^ap\ .*$|^br\ .*$" AP Młyn 1N (1440) Miasto, al. XX-lecia 34a: printuje $city= Miasto, $street= XX-lecia $house= 34a
W dniu 22.03.2012 19:54, Marcin napisał(a):
root@testsql:/var/www/lms/bin# ./lms-teryt -m|egrep -i "^ap .*$|^br .*$" AP Młyn 1N (1440) Miasto, al. XX-lecia 34a: printuje $city= Miasto, $street= XX-lecia $house= 34a
To miejscowość nazywa się Miasto? ;-)
W dniu 22 marca 2012 20:00 użytkownik Tomasz Chiliński < tomasz.chilinski@chilan.com> napisał:
AP Młyn 1N (1440) Miasto, al. XX-lecia 34a: printuje $city= Miasto,
$street= XX-lecia $house= 34a
To miejscowość nazywa się Miasto? ;-)
:) nie, ta miejscowość nie nazywa się miasto, to przykład.
ta miejscowość to teresin :)
W dniu 22.03.2012 20:08, Marcin napisał(a):
W dniu 22 marca 2012 20:00 użytkownik Tomasz Chiliński <tomasz.chilinski@chilan.com [1]> napisał:
AP Młyn 1N (1440) Miasto, al. XX-lecia 34a: printuje $city= Miasto, $street= XX-lecia $house= 34a
To miejscowość nazywa się Miasto? ;-)
:) nie, ta miejscowość nie nazywa się miasto, to przykład. ta miejscowość to teresin :)
A ulica XX-lecia pod jaką nazwą figuruje w bazie TERYT? Jak wygląda name i name2 dla tej ulicy?
W dniu 22 marca 2012 20:10 użytkownik Tomasz Chiliński < tomasz.chilinski@chilan.com> napisał:
A ulica XX-lecia pod jaką nazwą figuruje w bazie TERYT? Jak wygląda name i name2 dla tej ulicy?
tak będzie najczytelniej:
mysql> SELECT * FROM `location_streets` WHERE `name` LIKE '%XX%' AND `cityid` = 675; +------+----------+-------+-------+--------+--------+ | id | name | name2 | ident | typeid | cityid | +------+----------+-------+-------+--------+--------+ | 3935 | XX-lecia | NULL | 25178 | 6 | 675 | +------+----------+-------+-------+--------+--------+ 1 row in set (0.00 sec)
W dniu 22 marca 2012 20:12 użytkownik Marcin marcin@nicram.net napisał:
| 3935 | XX-lecia | NULL | 25178 | 6 | 675 |
jak tu w bazie usunąłem znak "-" i w adresie wpisałem "XX lecia" to bez problemu znalazł. wydaje się, że problematyczny jest ten "-" przekazywany jako argument do funkcji.
W dniu 22.03.2012 20:12, Marcin napisał(a):
W dniu 22 marca 2012 20:10 użytkownik Tomasz Chiliński <tomasz.chilinski@chilan.com [1]> napisał:
A ulica XX-lecia pod jaką nazwą figuruje w bazie TERYT? Jak wygląda name i name2 dla tej ulicy?
tak będzie najczytelniej:
mysql> SELECT * FROM `location_streets` WHERE `name` LIKE %XX% AND `cityid` = 675; +------+----------+-------+-------+--------+--------+ | id | name | name2 | ident | typeid | cityid | +------+----------+-------+-------+--------+--------+ | 3935 | XX-lecia | NULL | 25178 | 6 | 675 | +------+----------+-------+-------+--------+--------+ 1 row in set (0.00 sec)
Co pokazuje Ci: SELECT * FROM `location_streets` WHERE `name` LIKE %XX-lecia% AND `cityid` = 675;
W dniu 22 marca 2012 20:30 użytkownik Tomasz Chiliński < tomasz.chilinski@chilan.com> napisał:
Co pokazuje Ci: SELECT * FROM `location_streets` WHERE `name` LIKE %XX-lecia% AND `cityid` = 675;
bez ciapków "'" dla LIKE jest błąd składni
mysql> SELECT * FROM location_streets WHERE name LIKE %XX-lecia% AND cityid = 675; ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '%XX-lecia% AND cityid = 675' at line 1
z ciapkami jest ok, czy to są podwójne czy pojedyńcze jest ok mysql> SELECT * FROM location_streets WHERE name LIKE "%XX-lecia%" AND cityid = 675; +------+----------+-------+-------+--------+--------+ | id | name | name2 | ident | typeid | cityid | +------+----------+-------+-------+--------+--------+ | 3935 | XX-lecia | NULL | 25178 | 6 | 675 | +------+----------+-------+-------+--------+-----
linia 658 $street_get->execute($street, $street, "$city%")
zmiana ostatniego parametru na: $city, bez procenta dla LIKE zaowocowało found'em :)
$street_get->execute($street, $street, $city);
czyli tak jak myślałem problem z wywołaniem, a raczej przekazywaniem parametrów do funkcji ale czemu $city% psuje zapytanie
W dniu 22.03.2012 21:02, Marcin napisał(a):
linia 658 $street_get->execute($street, $street, "$city%")
zmiana ostatniego parametru na: $city, bez procenta dla LIKE zaowocowało foundem :)
$street_get->execute($street, $street, $city);
czyli tak jak myślałem problem z wywołaniem, a raczej przekazywaniem parametrów do funkcji ale czemu $city% psuje zapytanie
Ciekawe jakie zapytanie wykonuje się w mysql, gdy w perlu jest ten parametr ustawiony na "$city%". Zawsze możesz jeszcze spróbować wstawić tam: "$city%", żeby mieć pewność, że perl jakoś tego znaku "%" nie przetwarza.
W dniu 22.03.2012 21:35, Tomasz Chiliński napisał(a):
W dniu 22.03.2012 21:02, Marcin napisał(a):
linia 658 $street_get->execute($street, $street, "$city%")
zmiana ostatniego parametru na: $city, bez procenta dla LIKE zaowocowało foundem :)
$street_get->execute($street, $street, $city);
czyli tak jak myślałem problem z wywołaniem, a raczej przekazywaniem parametrów do funkcji ale czemu $city% psuje zapytanie
Ciekawe jakie zapytanie wykonuje się w mysql, gdy w perlu jest ten parametr ustawiony na "$city%". Zawsze możesz jeszcze spróbować wstawić tam: "$city%", żeby mieć pewność, że perl jakoś tego znaku "%" nie przetwarza.
Na pewno dla tabel terytowych masz kodowanie utf8 i porównywanie utf8_polish?
W dniu 22 marca 2012 21:37 użytkownik Tomasz Chiliński < tomasz.chilinski@chilan.com> napisał:
Na pewno dla tabel terytowych masz kodowanie utf8 i porównywanie utf8_polish?
na 1000%
w innych tabelach mam też _general_ci, ale w terytowych, w netdevices mam _polish_ci OT. jak masowo i szybko zmienić porównywanie w całej bazie dla wiszytkich komórek?
W dniu 22 marca 2012 21:35 użytkownik Tomasz Chiliński < tomasz.chilinski@chilan.com> napisał:
Ciekawe jakie zapytanie wykonuje się w mysql, gdy w perlu jest ten parametr ustawiony na "$city%".
hmm, też zastanawiające
Zawsze możesz jeszcze spróbować wstawić tam: "$city%", żeby mieć pewność, że perl jakoś tego znaku "%" nie przetwarza.
tak też próbowałem. próbowałem w bazie wpisywać miasto ze spacjami, sporo białych znaków przed i za. za każdym razem miałem found :)
uczestnicy (2)
-
Marcin
-
Tomasz Chiliński