28. september 2007 - 09:18Der er
7 kommentarer og 1 løsning
duplicate entry
Fodboldholdet side stoppede lige pludselig med at virke og viser nu bare "Duplicate entry '4603' for key 1"
Jeg har forsøgt at slette den eneste post jeg kunne finde med 4603 men lige lidt hjalp det og jeg har ingen idé om hvad der ellers er sket. Er der nogle der har et bud således at jeg kan pejle mig ind på det.
Du må kunne lokalisere den linie den går ned i og finde ud af hvilken sql den vil udføre.
Hvis du er mindre interesseret i hvad der er galt, kan du starte med at køre en repair table og se om det ordner problemet. Eller slette og gen oprette det index der dækker over 'key 1'.
problemet er jeg har ingen som helst idé om hvor Duplicate entry '4603' for key 1 kommer fra. Jeg er lige nu ikke interesseret i hvordan og hvorledes mere at det snart virker igen :)
Umiddelbart tænkte jeg et index men jeg har søgt via søg og slette den ene post med id 4603. Det hjalp ikke så alle gode råd til at finde en sådan fejl er velkomne. Jeg tager lige en backup og prøver så en repair så ser vi hvad der sker.
Jamen, hvis du ikke ved hvor det kommer fra, hvordan forventer du så at kunne finde problemet og løse det?
Du er nødt til at tilføje noget der giver dig mulighed for at se hvad der sker. Jeg går ud fra du bruger PHP, og gætter på at du lige nu bruger noget i denne stil for at køre dine queries:
mysql_query("INSERT INTO ...") or die(mysql_error());
Lav det sidste om til
or die(mysql_error().' ('.__FILE__.':'.__LINE__.')');
så kan du se hvilken fil og linje fejlen opstår i. Det giver dig dermed mulighed for at finde ud af hvilken SQL der bliver sendt afsted, og dermed kan du også se hvilken tabel der genererer denne duplicate key.
Hvis du har lavet separate funktioner til at foretage queryen, kan du evt. vælge at skrive queryen ud i stedet, eller sende fil- og linjenummer ind som parametre (der bruger du __FILE__ og __LINE__ i kaldet til funktionen, du kan ikke bruge metodedeklarationen).
Dernæst konstaterer jeg at jeg ikke helt ved hvorfor. Jeg endte med at slette en tabel med statistik og genopbygge den i databasen. At det så lige var den tabel kom nu meget bag på mig. Den indeholder ip, dato, hvilken side der vises og søgninger gav intet resultat på "4603" meget meget mystisk.
pidgeot jeg har faktisk mysql_error på de fleste af mine queries problemet her var blandt andet at der kaldes almindeligt mange moduler før siden vises så og det er 2½ år siden jeg lavede det så jeg havde ingen idé og heller intet overblik over filerne. Jeg spurgte mest for måske var der nogle klogere hoveder der kunne gennemskue hvor det kunne gå galt. Jeg får tingene til at fungere men er i bund og grund i mysql noob :). Igen så var dit råd et godt et :)
Anyway kan I begge ikke smide et svar som tak for kigget. Hvorfor fandt jeg aldrig ud af men vigtigst - vi kører igen :
pidgeot Jeg kendte ikke FILE LINE tricket det er værd at huske! Jeg plejer at gøre nogenlunde sådan her : or die("FEJL I funktion NAVN ".mysql_error()); men din ser mere effektiv ud :)
Du må da godt give lidt for det trick hvis du synes, men tag du bare hovedparten selv - du løste jo selv problemet :)
Og ja, det er lidt nemmere at have med at gøre når man skal fejlsøge - særligt hvis man i sin editor kan sætte en makro op til at tilføje det når man tryker på en tast. :)
Det er absolut ganske smart - normalt har jeg nu ikke haft nogle problem med at finde fejlene selvom det er 20.000+ liniers kode. Hvis altså jeg bare havde rodet med det for nyligt og stadigt havde filerne i frisk erindring.
Tak for kiggene og tricks :)
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.