![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 623 Pomógł: 79 Dołączył: 16.01.2008 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Miałem dzisiaj nieprzyjemną przygodę. Otóż modyfikowałem pewien skrypt, w którym musiałem usuwać pewne rekordy w tabelce. Tabelka 'users_privs' wygląda tak: (int) user_id (int) priv_id Nie ma tam pola ID(autoincrement, primary), za to jest klucz primary postawiony na te dwie kolumy. W tabelce są np. dane takie: user_id:1 priv_id:7 I teraz, zapytanie:
Czasem działa, czasem nie. Spędziłem z kumplem kupę czasu na to, nic nie działało, mimo, że testowaliśmy na różnych wersjach mysql. W końcu zrobiliśmy coś, co teoretycznie nie powinno pomóc, a jednak pomogło. Zlikwidowaliśmy primary key na te dwie kolumny (user_id i priv_id), założyliśmy nowe pole ID (autoincrement, primary key) i wszystko zaczęło działać. Testowaliśmy to na różnych wersjach mysql server, efekt ten sam. Czy może mi ktoś wytłumaczyć o co tu chodzi? Edit: Widzę, że nikt się nie kwapi do odpowiedzi:) To może inaczej: Czy ktoś z was miał podobną strukturę tabeli i miał/nie miał podobnych problemów? Czy w ogóle zdarza wam się robić tabelkę, gdzie nie ma id(primary key, autoincrement) a w zamian jest tabelka gdzie primary key jest tworzone na dwa pola? |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Cytat a w zamian jest tabelka gdzie primary key jest tworzone na dwa pola? Oczywiście że tak, jest to w miare normalna sytuacja. A to że ci nie chciał kasować to może były założone relacje które nie pozwalały na kasowanie akurat tego rekordu. Ciężko w ciemno zgadywać ale na 100% nie było tak, że raz działało a raz nie działało od widzimisie mysql.
-------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 623 Pomógł: 79 Dołączył: 16.01.2008 Ostrzeżenie: (0%) ![]() ![]() |
Relacje były, ale nie jako constraints, tj. mysql nie miał pojęcia o relacjach.
Cytat Ciężko w ciemno zgadywać ale na 100% nie było tak, że raz działało a raz nie działało od widzimisie mysql Gdy było parę rekordów, likwidował, gdy było więcej, nie likwidował. Nie było żadnego błędu, zachowywał się tak, jakby nie znalazł danego rekordu. |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 19.07.2025 - 10:08 |