Avatar billede nikolajdu Nybegynder
28. september 2007 - 09:18 Der 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.

/Nikolaj
Avatar billede sherlock Nybegynder
28. september 2007 - 09:30 #1
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'.
Avatar billede nikolajdu Nybegynder
28. september 2007 - 10:16 #2
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.
Avatar billede pidgeot Nybegynder
28. september 2007 - 10:25 #3
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).
Avatar billede nikolajdu Nybegynder
30. september 2007 - 00:48 #4
Først og fremmest: Jeg fik løst problemet :)

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 :
Avatar billede nikolajdu Nybegynder
30. september 2007 - 00:50 #5
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 :)
Avatar billede sherlock Nybegynder
30. september 2007 - 08:39 #6
Ingen point til mig. Godt du fik det løst :)
Avatar billede pidgeot Nybegynder
30. september 2007 - 11:32 #7
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. :)
Avatar billede nikolajdu Nybegynder
30. september 2007 - 23:48 #8
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 :)
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester