![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 1 190 Pomógł: 27 Dołączył: 23.04.2005 Ostrzeżenie: (0%) ![]() ![]() |
Mam taki kod (niedokończony ale odczytuje dane z bazy i zapisuje).
Błąd, który podałem w temacie pojawia się gdy tabela sessions wygląda tak:
Jeśli usunę UNIQUE(sessions_identifier) z tabeli to błąd się nie pojawia. Można to obejść sprawdzając czy wpis o podanym numerze sesji istnieje. Jeśli nie to wykonujemy insert a jeśli istnieje to update. Problem w tym, że zawsze sprawdzałem to poprzez mysql_affected_rows(). Niestety w tym wypadku to nic nie daje i błąd się pojawia. Mógłbym wykonywać selecta i sprawdzać czy został zwrócony wynik (jeśli tak to wpis już istnieje) ale chciałbym uniknąć zbędnego zapytania do bazy.. Macie jakiś pomysł? |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Przyjaciele php.pl Postów: 7 494 Pomógł: 302 Dołączył: 31.03.2004 Ostrzeżenie: (0%) ![]() ![]() |
Hmm, zagadkowa sprawa.
Mam kolejne pytanko pomocnicze, które może pozwoli znaleźć przyczynę błędu. Czy problem wywala przy każdym zapytaniu INSERT czy tylko przy tych, które naruszają klucz unikalności? Podejrzewam, że odpowiedź jest jasna, że tylko podczas wstawiana takich samych danych, ale wolę się upewnić. Nie mniej jednak mam pomysł. Wstaw sam wyrzucanie wyjątku w miejscu gdzie faktycznie problem może wystąpić. Ciekawe czy nadal będzie fatal czy Twój wyjątek.
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 1 190 Pomógł: 27 Dołączył: 23.04.2005 Ostrzeżenie: (0%) ![]() ![]() |
Hmm, zagadkowa sprawa. Mam kolejne pytanko pomocnicze, które może pozwoli znaleźć przyczynę błędu. Czy problem wywala przy każdym zapytaniu INSERT czy tylko przy tych, które naruszają klucz unikalności? Podejrzewam, że odpowiedź jest jasna, że tylko podczas wstawiana takich samych danych, ale wolę się upewnić. Pisałem, że tylko gdy jest naruszany klucz integralności.. Nie mniej jednak mam pomysł. Wstaw sam wyrzucanie wyjątku w miejscu gdzie faktycznie problem może wystąpić. Ciekawe czy nadal będzie fatal czy Twój wyjątek. Nadal fatal.. EDIT. Przetestowałem dokładniej. Sterownik do bazy mysql jest poprawny. Problem występuje tylko przy insercie wydawanym w klassie CubeSession. W innych miejscach poprawnie wywala informacje o duplikacji.. EDIT2. Problem rozwiązany. Trzeba było dodać obsługę wyjątków w CubeSession:
Nie rozumiem tylko dlaczego bez obsługi wyjątków wywala się tak.. Ktoś to potrafi wytłumaczyć? Ten post edytował J4r0d 13.02.2007, 21:31:35 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 9.10.2025 - 12:04 |