Błędny string dla funkcji inet_aton 1411

Błędny string dla funkcji inet_aton 1411
WG
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 3
0

Cześć.

Przepraszam jeśli to nie jest właściwy dział, ale uznałem, że coś w bazie mam do wyczyszczenia.

Mam mysql Ver 8.0.30-0ubuntu0.20.04.2 for Linux on x86_64 ((Ubuntu)).

Na stronie gdy próbuję sortować po kolumnie zawierającej adresy IP otrzymuję takie ostrzeżenie:

SQL Warnings: 1411: Incorrect string value: 'glpibaza.glpi_ipaddresses_937b8c393ea02752d06397f2628684f5.name' for function inet_aton 1411: Incorrect string value: 'glpibaza.glpi_ipaddresses_937b8c393ea02752d06397f2628684f5.name' for function inet_aton 1411: Incorrect string value: 'glpibaza.glpi_ipaddresses_937b8c393ea02752d06397f2628684f5.name' for function inet_aton 1411: Incorrect string value: 'glpibaza.glpi_ipaddresses_937b8c393ea02752d06397f2628684f5.name' for function inet_aton 1411: Incorrect string value: 'glpibaza.glpi_ipaddresses_937b8c393ea02752d06397f2628684f5.name' for function inet_aton 1411: Incorrect string value: 'glpibaza.glpi_ipaddresses_937b8c393ea02752d06397f2628684f5.name' for function inet_aton in query "SELECT DISTINCT glpi_computers.id AS id, 'username' AS currentuser, glpi_computers.entities_id, glpi_computers.is_recursive, glpi_computers.name AS ITEM_Computer_1, glpi_computers.id AS ITEM_Computer_1_id, GROUP_CONCAT(DISTINCT CONCAT(IFNULL(glpi_ipaddresses_937b8c393ea02752d06397f2628684f5.name, 'NULL'), '$#$',glpi_ipaddresses_937b8c393ea02752d06397f2628684f5.id) ORDER BY glpi_ipaddresses_937b8c393ea02752d06397f2628684f5.id SEPARATOR '$$##$$') AS ITEM_Computer_126, glpi_agents.last_contact AS ITEM_Computer_902, glpi_computers.date_mod AS ITEM_Computer_19, glpi_computers.contact AS ITEM_Computer_7, glpi_locations.completename AS ITEM_Computer_3, glpi_computers.otherserial AS ITEM_Computer_6, glpi_states.completename AS ITEM_Computer_31, glpi_computers.serial AS ITEM_Computer_5, GROUP_CONCAT(DISTINCT CONCAT(IFNULL(glpi_computerantiviruses.is_uptodate, 'NULL'), '$#$',glpi_computerantiviruses.id) ORDER BY glpi_computerantiviruses.id SEPARATOR '$$##$$') AS ITEM_Computer_170, glpi_sockets.id AS ITEM_Computer_1310, GROUP_CONCAT(DISTINCT CONCAT(IFNULL(glpi_sockets_4371a472fe73b6d359d0ff27ed58927e.name, 'NULL'), '$#$',glpi_sockets_4371a472fe73b6d359d0ff27ed58927e.id) ORDER BY glpi_sockets_4371a472fe73b6d359d0ff27ed58927e.id SEPARATOR '$$##$$') AS ITEM_Computer_22, GROUP_CONCAT(DISTINCT CONCAT(IFNULL(glpi_plugin_tag_tags_23e0c5a3c33f9fc3341d81fc24a0e3a5.name, 'NULL'), '$#$',glpi_plugin_tag_tags_23e0c5a3c33f9fc3341d81fc24a0e3a5.id) ORDER BY glpi_plugin_tag_tags_23e0c5a3c33f9fc3341d81fc24a0e3a5.id SEPARATOR '$$##$$') AS ITEM_Computer_10500, glpi_operatingsystemversions_9719987b154aaf3b42c3db32aef59090.name AS ITEM_Computer_46, glpi_operatingsystemeditions_9719987b154aaf3b42c3db32aef59090.name AS ITEM_Computer_63, glpi_computermodels.name AS ITEM_Computer_40, glpi_agents.version AS ITEM_Computer_903, glpi_agents.name AS ITEM_Computer_900, glpi_agents.id AS ITEM_Computer_900_id, glpi_computers.date_creation AS ITEM_Computer_121, glpi_computers.comment AS ITEM_Computer_16 FROM glpi_computers LEFT JOIN glpi_ipaddresses AS glpi_ipaddresses_937b8c393ea02752d06397f2628684f5 ON (glpi_computers.id = glpi_ipaddresses_937b8c393ea02752d06397f2628684f5.mainitems_id AND glpi_ipaddresses_937b8c393ea02752d06397f2628684f5.mainitemtype = 'Computer' AND glpi_ipaddresses_937b8c393ea02752d06397f2628684f5.is_deleted = '0' ) LEFT JOIN glpi_agents ON (glpi_computers.id = glpi_agents.items_id AND glpi_agents.itemtype = 'Computer' ) LEFT JOIN glpi_locations ON (glpi_computers.locations_id = glpi_locations.id ) LEFT JOIN glpi_links_itemtypes ON (glpi_links_itemtypes.itemtype = 'Computer' ) LEFT JOIN glpi_links AS glpi_links_ff2a378adbb623734295d631bc0c6584 ON (glpi_links_itemtypes.links_id = glpi_links_ff2a378adbb623734295d631bc0c6584.id )LEFT JOIN glpi_states ON (glpi_computers.states_id = glpi_states.id ) LEFT JOIN glpi_computerantiviruses ON (glpi_computers.id = glpi_computerantiviruses.computers_id ) LEFT JOIN glpi_sockets ON (glpi_computers.id = glpi_sockets.items_id AND glpi_sockets.itemtype = 'Computer' ) LEFT JOIN glpi_networkports ON (glpi_computers.id = glpi_networkports.items_id AND glpi_networkports.itemtype = 'Computer' ) LEFT JOIN glpi_networkportethernets AS glpi_networkportethernets_23c902de5f3b180b2aef9e32e62e03a6 ON (glpi_networkports.id = glpi_networkportethernets_23c902de5f3b180b2aef9e32e62e03a6.networkports_id ) LEFT JOIN glpi_sockets AS glpi_sockets_4371a472fe73b6d359d0ff27ed58927e ON (glpi_networkportethernets_23c902de5f3b180b2aef9e32e62e03a6.id = glpi_sockets_4371a472fe73b6d359d0ff27ed58927e.networkports_id ) LEFT JOIN glpi_plugin_tag_tagitems ON (glpi_computers.id = glpi_plugin_tag_tagitems.items_id AND glpi_plugin_tag_tagitems.itemtype = 'Computer' ) LEFT JOIN glpi_plugin_tag_tags AS glpi_plugin_tag_tags_23e0c5a3c33f9fc3341d81fc24a0e3a5 ON (glpi_plugin_tag_tagitems.plugin_tag_tags_id = glpi_plugin_tag_tags_23e0c5a3c33f9fc3341d81fc24a0e3a5.id ) LEFT JOIN glpi_items_operatingsystems ON (glpi_computers.id = glpi_items_operatingsystems.items_id AND glpi_items_operatingsystems.itemtype = 'Computer' ) LEFT JOIN glpi_operatingsystemversions AS glpi_operatingsystemversions_9719987b154aaf3b42c3db32aef59090 ON (glpi_items_operatingsystems.operatingsystemversions_id = glpi_operatingsystemversions_9719987b154aaf3b42c3db32aef59090.id )LEFT JOIN glpi_operatingsystemeditions AS glpi_operatingsystemeditions_9719987b154aaf3b42c3db32aef59090 ON (glpi_items_operatingsystems.operatingsystemeditions_id = glpi_operatingsystemeditions_9719987b154aaf3b42c3db32aef59090.id )LEFT JOIN glpi_computermodels ON (glpi_computers.computermodels_id = glpi_computermodels.id ) WHERE glpi_computers.is_deleted = 0 AND glpi_computers.is_template = 0 GROUP BY glpi_computers.id ORDER BY INET_ATON(glpi_ipaddresses_937b8c393ea02752d06397f2628684f5.name) ASC LIMIT 0, 15"

Sprawdzam tabelę glpi_ipaddresses i kolumnę name. Mam tam IPv4 i kilka pozycji z IPv6. Czy to te IPv6 mogą coś takiego generować?

abrakadaber
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 6610
2

gdzie SQL?

WG
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 3
0

Przepraszam, nie rozumiem pytania. Chodzi Ci o to, że nie ten dział? Czy zrzut tabeli powinienem dodać?

woolfik
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1611
3

@WebGreg: nie unoś się po prostu stwierdziłem fakt. Zapytanie z błędu, które podałeś sugeruje użycie jakiegoś ORM stąd zdziwienie w komentarzu @Marcin.Miga że jest distinct z group by. Natomiast @abrakadaber zapytał Cię o zapytanie, które wykonujesz, a ty odpisałeś "Przepraszam, nie rozumiem pytania". Napisałeś: "Na stronie gdy próbuję sortować po kolumnie zawierającej adresy IP otrzymuję takie ostrzeżenie:" co oznacza, że masz jakąś webową aplikację, która udostępnia Ci dane i przy kliknięciu sortuj na jakimś gridzie leci Ci wyjątek. Nie podałeś nam jednak ANI struktury tabel ANI zapytania więc co my Ci mamy pomóc? Jakby na forum był dział "wróżenie z fusów" to wtedy można by spokojnie odpowiedzieć na twoje pytanie: "Chodzi Ci o to, że nie ten dział? ". Natomiast jesteś nowy na forum (i nie mówię tego tylko na podstawie daty rejestracji i ilości postów bo to może być po prostu nowe konto) bo gdybyś trochę tu posiedział to byś wiedział, że ludzie jak @abrakadaber, @cerato, ja lub @Marcin.Miga to raczej ludzie pomocni i cierpliwi. Pomagają jak tylko mogą mimo iż czasami cierpliwość nasza wystawiana jest na wiele prób.

Natomiast teraz bardziej merytorycznie. Twój komunikat jasno mówi, że masz nieprawidłowe dane wejściowe dla stringa:
Incorrect string value: 'glpibaza.glpi_ipaddresses_937b8c393ea02752d06397f2628684f5.name' for function inet_aton

Sortując po IP musimy wiedzieć jak to IP jest zapisane w bazie czy w jakimś polu typu INET czy raczej jako string. Jak to drugie to jaka jest długość tego pola, jakie dane zwraca select (czy np nie ma rzutowania na typ INET) dlaczego wywala się tylko przy sortowaniu? (prawdopodobnie grid pobiera tylko pierwsze n rekordów - pagening - natomiast klikając sortowanie dociąga problematyczny rekord i rzuca wyjątkiem)

Za mało danych podałeś aby cokolwiek więcej podpowiedzieć.

WG
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 3
1

@woolfik spoko. Nie unoszę się. Parokrotnie napisałem, że rozumiem. Napisaliście to samo, ale w różny sposób - Twój uznałem po prostu za niesmaczny (bo nigdzie nawet nie sugerowałem, że się na tym znam). Jak zauważyłeś jestem nowy (reakcja byłyby bardziej zrozumiała, gdyby to był 100 post i nadal w tym samym stylu) - najwyraźniej zabłądziłem i to zdecydowanie nie ta liga, aczkolwiek miałem cichą nadzieję, że ktoś kto z tym obcuje na co dzień jest w stanie szybko podpowiedzieć w czym może być problem, bo być może jest to zakres podstawowy. Ja się na tym nie znam, więc nie jestem w stanie ocenić. Nie wątpię, że wymienione osoby chętnie pomagają. nie wątpię nawet w Twoje umiejętności pomocy, bo jak widać punkty Ci się sypią.

@S4t - serio uszczęśliwia cię bajkopisarstwo? Wdrożyłem GLPI, którym teraz administruję. Nie jestem programistą, nie jestem bazodanowcem, ale w trakcie korzystania dostaję błąd, z którym muszę sobie jakoś poradzić, więc szukam wsparcia. Mogę zapomnieć, że firma znajdzie kasę na programistę, albo bazodanowca - a pracować trzeba. I gdybym podchodził do tematu na zasadzie - nie znam się, to się nie dotykam - to nie rozwiązałbym wielu innych problemów, na które do tej pory się natknąłem. A do tego sam stałbym w miejscu. Więc nadal będę próbował to jakoś rozwiązać - metodą prób i błędów.

@woolfik

Natomiast teraz bardziej merytorycznie. Twój komunikat jasno mówi, że masz nieprawidłowe dane wejściowe dla stringa:
Incorrect string value: 'glpibaza.glpi_ipaddresses_937b8c393ea02752d06397f2628684f5.name' for function inet_aton

Na tym się też skupiłem. Próbowałem u developerów, ale nie są w stanie u siebie tego błędu odtworzyć (więc zakładam, że zapytanie jest bez błędu), a bazy nie mogę udostępnić z uwagi na dane. Jak wspomniałem miałem nadzieję, że być może uda mi się uzyskać jakąś podpowiedź tutaj - z powodu braku wiedzy nie byłem w stanie określić jakie dane są potrzebne. Chociaż to, że developerzy sobie nie poradzili powinno być jakąś podpowiedzią. No ale musiałem spróbować.

Sama struktura bazy wygląda tak:

#	Nazwa	                Typ	          Metoda porównywania napisów	Atrybuty	Null   Ustawienia domyślne   Dodatkowo
1	id (Podstawowy)	        int		                                    UNSIGNED	Nie	   Brak		             AUTO_INCREMENT
2	entities_id (Indeks)    int		                                    UNSIGNED	Nie	   0
3	items_id (Indeks)       int		                                    UNSIGNED	Nie	   0
4	itemtype (Indeks)       varchar(100)  utf8mb4_unicode_ci                        Nie    Brak
5	version	                tinyint		                                UNSIGNED	Tak	   0
6	name (Indeks)           varchar(255)  utf8mb4_unicode_ci                        Tak	   NULL
7	binary_0 (Indeks)       int		                                    UNSIGNED	Nie	   0
8	binary_1(Indeks)	    int		                                    UNSIGNED    Nie	   0
9	binary_2(Indeks)	    int		                                    UNSIGNED	Nie	   0
10	binary_3(Indeks)	    int		                                    UNSIGNED	Nie	   0
11	is_deleted(Indeks)	    tinyint(1)			                                    Nie	   0
12	is_dynamic(Indeks)	    tinyint(1)			                                    Nie	   0
13	mainitems_id(Indeks)	int		                                    UNSIGNED	Nie	   0
14	mainitemtype(Indeks)	varchar(255)  utf8mb4_unicode_ci                        Tak	   NULL

Indeks dla "name":

Nazwa klucza Typ Jednoznaczny Spakowany Kolumna Moc Metoda porównywania napisów Null
textual BTREE Nie Nie name 1034 A Tak

Kolumna "name" zawiera listę adresów IPv4 i IPv6. Niestety nie mogę wyczyścić danych, bo jest zbyt dużo powiązań i się wszystko posypie. Zresztą samo sortowanie działa. Komunikat jest widoczny jedynie gdy program odpalam w trybie debugowania. Teoretycznie mógłbym machnąć ręką, ale mam alergię na błędy i jeśli tylko jestem w stanie, to staram się je eliminować, bo jeden pominięty błąd często skutkuje tym, że w końcu zaczną pojawiać się kolejne.

abrakadaber
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 6610
1

wygląda na to jakby dane w kolumnie glpi_ipaddresses.name masz jakiekolwiek inne dane niż adres IP w postaci '192.168.1.1' (funkcja inet_aton zamienia adres ip w takiej właśnie postaci na inta) - przejrzyj dane w tej tabeli i zobacz czy jest w niej coś podejrzanego

cerrato
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Poznań
  • Postów: 9019
1

Wdrożyłem GLPI, którym teraz administruję. Nie jestem programistą, nie jestem bazodanowcem

No OK, ale nie możesz się albo odezwać na forum tego GLPI (jeśli takie coś istnieje, nie wiem, nie znam tego oprogramowania), albo nawet odpłatnie zlecić to producentowi tego softu czy komuś, kto zajmuje się wdrażaniem i serwisowaniem tego czegoś? Z tego co widzę to mają tam jakieś wsparcie, jakieś płatne licencje itp. Może to jest ścieżka, którą powinieneś pojechać?

Próbowałem u developerów, ale nie są w stanie u siebie tego błędu odtworzyć

No to zawsze można udostępnić im jakoś swoje środowisko - czy przez jakiegoś RDP czy innego VPN/SSH i niech zobaczą, co konkretnie się u Ciebie dzieje. My czasem (jak mamy dziwny problem z ERP wykorzystywanym w firmie) to przesyłamy samą bazę do producenta softu (albo ich wpuszczamy przez RDP na nasz serwer) - nigdy się nie spotkałem z sytuacją, żeby przy takim scenariuszu nie dało się błędu zreprodukować.

woolfik
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1611
0
abrakadaber napisał(a):

wygląda na to jakby dane w kolumnie glpi_ipaddresses.name masz jakiekolwiek inne dane niż adres IP w postaci '192.168.1.1' (funkcja inet_aton zamienia adres ip w takiej właśnie postaci na inta) - przejrzyj dane w tej tabeli i zobacz czy jest w niej coś podejrzanego

Gdzieś tam było napisane ze ma ipv6 wiec pewnie to go boli

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.