Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [kohana] mysql has gone away
nmts
post
Post #1





Grupa: Zarejestrowani
Postów: 283
Pomógł: 34
Dołączył: 21.03.2008

Ostrzeżenie: (0%)
-----


Pracując dzisiaj z KO3 napotkałem błąd jak w tytule, który powodował moduł Auth. Wylogowanie (usunięcie ciastek), i ponowne zalogowanie pomogło. Problem powraca (trudno określić kiedy), mogę w późniejszym czasie przeprowadzić głębszą analizę Auth, ale może ktoś mi jej oszczędzi. (IMG:style_emoticons/default/winksmiley.jpg)

  1. ERROR: ErrorException [ 2 ]: mysql_query() [function.mysql-query]: MySQL server has gone away ~ MODPATH/database/classes/kohana/database/mysql.php [ 171 ]


Coś jednak Auth nie jest głównym winowajcą, bo jakieś powołanie instancji session z Auth robi problem... problem zdarza się w różnych sytuacjach, np. usuwam rekord, a następnia muli, muli i po bardzo długim (to akurat wina długiego timeouta) czasie mysql has gone away.

Przykładowo zarejestrowałem użytkownika, pokazało strone - potwierdzenie, po czym przejście na stronę główną już jest nie możliwe bo coś muli - nie mam pojęcia jak sprawdzić co, analizowanie bebechów Kohany średnio mi się podoba. (IMG:style_emoticons/default/sad.gif)

Przykładowo wynik z Kohany po zarejestrowaniu (z sytuacji powyżej):
http://img510.imageshack.us/img510/3495/profilerr.jpg

Przetestowałem bazę na innym serwerze to admin stwierdził, że mu takie zapytanie bazę blokuje: (wtf w ogóle, skąd niby takie zap. miałoby blokować bazę)

  1. SELECT (SELECT COUNT(objects.id) FROM objects WHERE cities.id = objects.city_id) AS `objects_count`, `cities`.* FROM `objects`, `cities` GROUP BY `cities`.`id` ORDER BY `objects_count` DESC LIMIT 20 (1)


Ten post edytował nmts 17.01.2011, 12:39:00
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
thek
post
Post #2





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Nie patrzyłem czemu, ale dla mnie zapytanie jest mega niewydajne. Weź tabelę obiektów, złącz ją z cities, pogrupuj i voila. O ile rozumiem CO chcesz tym zapytaniem zrobić (IMG:style_emoticons/default/smile.gif)
Coś jak :
  1. SELECT c.*, count(o.id) AS liczba FROM objects AS o LEFT JOIN cities AS c ON c.id = o.city_id GROUP BY c.id ORDER BY liczba DESC LIMIT 20


A bazka się sypie bo masz iloczyn kartezjański tych tabel... Wszystkie kombinacje możliwe między cities i objects (taki jest efekt wymieniania tabel po przecinku) i jeszcze podzapytaniem wewnętrznym poganiane (IMG:style_emoticons/default/winksmiley.jpg) Masz więc ostre pojechanie po bazie i się dziwisz, że zdechła? Niech w każdej ma choćby po 1000 rekordów to summa sumarum wychodzi Ci 1000000 kombinacji a do tego jeszcze podzapytanie nieskorelowane (IMG:style_emoticons/default/winksmiley.jpg) To i blokuje bazka się bo nie zdoła szybko tego przerobić.
Powód edycji: [thek]:
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 28.12.2025 - 22:26