[Gelöst] Erbitte Hilfe bei der Fehlersuche folgender Fehlermeldung
Eingetragen von ahoek (570)
am 02.04.2011 - 17:26 Uhr in
am 02.04.2011 - 17:26 Uhr in
user warning: Duplicate entry '' for key 2 query: INSERT INTO users (created) VALUES (1301761185) in /var/www/web0/html/depressionen-abc.com/modules/user/user.module on line 329.
Das sehen alle nicht eingeloggten User meiner Seite.
Ich nutze den Mysqldumper.
Was muss ich genau tun.
Habe Angst was kaputt zu machen....
- Anmelden oder Registrieren um Kommentare zu schreiben
Die Fehlermeldung sagt,
am 02.04.2011 - 18:09 Uhr
dass versucht wird einen doppelten Eintrag in die Datenbank zu schreiben. In der Tabelle "users" enthält das Feld "created" den Timestamp an dem der Useraccount angelegt wurde. Auf diesem Feld liegt ein Index, sodass Einträge hier eindeutig sein müssen. Sind sie aber in deinem Falle nicht - daher die Fehlermeldung.
Ich würde folgendes versuchen:
In der Datenbank den enstprechenden Eintrag suchen (Tabelle users Feld created mit dem Wert 1301761185) und diesen z.B. auf 1301761186 setzen.
Was natürlich nur die Auswirkug nicht aber die Ursache des Fehlers beseitigt.
Vielleicht hast du mit dem Mysqldumper die Datenbank importiert und dabei etwas falsch gemacht?
Gruss
abc123
Ich habe gerade gesehen, dass
am 02.04.2011 - 18:18 Uhr
Ich habe gerade gesehen, dass sich die Nummern in der Fehlermeldung ständig abwechseln.....
Die DB-Einträge für die User sind nicht zu finden.
Nein, nichts gemacht. Die Meldung tauchte plötzlich auf.
Logge ich mich ein, ist sie weg.....
Das muss irgendwie mit dem
am 02.04.2011 - 18:38 Uhr
Das muss irgendwie mit dem User "Gast" zu tun haben.....
Das hier habe ich in den Logfiles gefunden:
Uploaded with ImageShack.us
Zeile 329
am 02.04.2011 - 18:54 Uhr
des user.module ist Teil der Funktion user_save die neue User anlegt und Änderungen der User-Accounts speichert. Diese Zeile produziert den Fehler.
Komisch nur, dass User mit der ID 0, also annonyme User diesen Fehler auslösen.
Check doch mal die angemeldeten User...
Wenn du mit Imageshark sonst nichts zu tun hast, scheint hier vielleicht etwas im Argen zu liegen.
Wie sieht denn generell sie Userkonfuguration aus. Können User sich anmelden und werden die Accounts automatisch freigeschaltet? Sind Captchas aktiv um Spambots fern zu halten. Können User Bilder hochladen oder irgendwelche komischen Sachen in Beiträge schreiben? Ist Workflow installiert um die Veröffentlichung von Beiträgen zu kontrollieren?
Wie sieht denn der Logeintrag aus?
Gruss
abc123
Die angemeldeten User sind
am 02.04.2011 - 19:00 Uhr
Die angemeldeten User sind fast 500.
Wonach soll ich da suchen?
User können sich anmelden und werden nach Bestätigungsmail automatisch frei geschaltet.
Captchas sind on.
Die User können Bilder mit dem Fck-Editor hochladen.
Was meinst Du mit komischen Sachen? Die Eingabeformate sind auf Full-HTML, aber eingeschränkt.
Workflow brauchte ich bisher nicht.
Welchen Logeintrag meinst Du? Den von Drupal?
Hi, 1. noch ist ja nix in den
am 02.04.2011 - 19:19 Uhr
Hi,
1. noch ist ja nix in den Brunnen gefallen! Deine Seite schnauft ja noch.
2. Normal sichert man ja seine SQL für den Fall, dass es mal knallen sollte. Hast du eine alte DB zurückgespielt? Oder ist die seit der ersten Stunden unangetastet?
3. Der MSD ist ein super geniales Tool. Zwar vermutlich nicht frei von Fehlern, aber fast. Wenn es keine Fehler bei der Sicherung gab, kannst du normal getrost auf eine ältere zurück greifen. Beim Sichern selber sollten eh keine bestehenden Daten in irgendeiner Form manipuliert werden. Ist ja nur ein Backup.
4. Hab mal bissel gegoogled und dort sind einige der Meinung, ähnliche Fehler können durch felendes Auto Increment verursacht werden!
ACHTUNG BEISPIEL CODE!!! Musst selber erst nach der richtigen Tabelle und dessen Werten schauen!
VON
`uid` int(10) unsigned NOT NULL default '0',
ZU
`uid` int(10) unsigned NOT NULL auto_increment,
EIN BEISPIEL! Bitte bedenke das!
Hast du nur die Seite oder auch eine "Spielwiese"? Ggf. würde ich einfach alles sichern. Dateien + SQL und lokal mit xampp den Fehler reproduzieren. Dann erst z.B. Auto Increment zufügen.
Ist zwar aufwendiger, aber so hast du erstmal immer eine Testinstallation parat und zum anderen machst du rein gar nix kaputt.
mfg Crusher
Die Logdatei
am 02.04.2011 - 19:41 Uhr
vom Server ist aussagekräftiger als die von Drupal.
Kontrollierts du die Beiträge die veröffentlicht werden (das geht sehr gut mit Workflow) oder kann sich jeder (also auch Spambots, Skriptkiddies etc) anmelden und beliebige Inhalte posten? Evtl. hat da jemand versucht etwas auf den Server zu laden, dass in den Authentifizierungsprozess eingreift. Soetwas würde u.U. in der Server-Log-Datei als Aufruf an das Bildverzeichnis erscheinen.
Hallo Crusher, ich habe noch
am 02.04.2011 - 20:05 Uhr
Hallo Crusher,
ich habe noch eine Sicherung von gestern Abend, habe auch die User-Tabelle nochmal eingespielt. Ohne Ergebnis.
Es ist die DB der ersten Stunde und es wurde von Hand nichts verändert.
Welche ist die richtige Tabelle. DBs sind für mich ein Buch mit 4 Siegeln....
Eine Spielwiese ist in paar Minuten eingerichtet.....
Wenn ich in der Tabelle User ---> created den Wert auf auto_increment setze erhalte ich folgende Fehlerm.:
MySQL-ERROR
MySQL meldet:
Incorrect table definition; there can be only one auto column and it must be defined as a key
Fehler bei der Anfrage:
ALTER TABLE `dbxyz`.`users` CHANGE COLUMN `created` `created` INT(11) NOT NULL AUTO_INCREMENT ;
Edit:
In der DB-Tabelle ist die UID als einzige mit einem Primärschlüssel versehen. Kann das der fehler sein?
Zitat: Kontrollierts du die
am 02.04.2011 - 20:03 Uhr
Kontrollierts du die Beiträge die veröffentlicht werden (das geht sehr gut mit Workflow) oder kann sich jeder (also auch Spambots, Skriptkiddies etc) anmelden und beliebige Inhalte posten? Evtl. hat da jemand versucht etwas auf den Server zu laden, dass in den Authentifizierungsprozess eingreift. Soetwas würde u.U. in der Server-Log-Datei als Aufruf an das Bildverzeichnis erscheinen.
Nein im eigentlichen Sinne kontrolliere ich die Beiträge nicht. Das Forum ist gut moderiert.
Spambots würde ich mal ausschließen, es sei denn sie haben gelernt Imgae-Captchas zu knacken. Skriptkiddies....., kann sein.
Die Serverlogs nutzen mir nicht viel. Ich guck da rein, wie ein Schwein ins Uhrwerk....
Noch was... Der user Gast
am 02.04.2011 - 20:15 Uhr
Noch was...
Der user Gast hatte plötzlich eine User-ID.
Ich weiß nicht ob das normal ist, da ich nie darauf geachtet hatte
Oh ha
am 02.04.2011 - 21:21 Uhr
du weißt aber schon, dass du für alle veröffentlichten Inhalte verantwortlich bist und mindesten die Mitstörerhaftung hast.
Serverlogdateien lassen sich in einen Texteditor laden und automatisch nach Zugriffe auf das Bildverzeichnis oder nach der Endung .php durchsuchen. Wenn dort etwas ungewöhnlich aussieht also anstatt
-deine Domain/sites/default/files/dein Bildverzeichnis/ein_Bild.jpg
-deine Domain/sites/default/files/dein Bildverzeichnis/ein_boeses_script.php
hast du eine Spur. Anhand der IP-Adresse, die in der ersten Spalte steht, kannst du dann hiermit das Netzwerk lokalisieren aus dem der Aufruf kam. Wenn Utrace keine Ausgabe liefert, kam der Aufruf über einen Proxy oder Annonymizer, was ein Indiz ist.
Der User Gast hat standardmässig immer die ID 0.
Ich betreibe die Seite von
am 02.04.2011 - 21:31 Uhr
Ich betreibe die Seite von Spanien aus, da ist es nicht so eng mit der Mitstörerhaftung.
Außerdem wird ja moderiert....
Ich habe jetzt das Uploadverzeichnis der User mal durchsucht.
Kein böses Script.ph oder ähnliches......
Ich habe die Meldung erstmal
am 02.04.2011 - 22:05 Uhr
Ich habe die Meldung erstmal per CSS ausgeblendet und bin noch immer für jeden Rat dankbar.
Was mir noch eingefallen ist.
Ich nutze den Flashchat.
Der setzt direkt auf die User-DB von Drupal auf. Vielleicht kommen die Probleme daher...
beim user 0 bzw. Account, die
am 02.04.2011 - 22:51 Uhr
beim user 0 bzw. Account, die uid auf 0 setzen. Manche DB-Backup Programme wie der MSD setzen den Wert nicht auf 0, weil das irgendeine Mysql-Import Geschichte ist.
Hallo Tobias, ja habe ich
am 02.04.2011 - 22:55 Uhr
Hallo Tobias,
ja habe ich schon gemacht.
Leider besteht das Problem fort.
Man findet auch nichts in Google. Ich habe in drei Sprachen gesucht.....
Dann mach doch mal ein in
am 02.04.2011 - 23:08 Uhr
Dann mach doch mal ein in watchdog() in user_save().
<?php
watchdog('DEBUG', '$account <pre>@code</pre> $array <pre>@code1</pre>', array('@code' => print_r($account, 1), '@code1' => print_r($array, 1)));
?>
Ich sehe als Gast diese Fehlermeldung nicht, vielleicht ist der Fehler weg.
Hallo Tobias, der Fehler ist
am 03.04.2011 - 00:09 Uhr
Hallo Tobias,
der Fehler ist noch da. Außer auf der Startseite.
Man kann bloß nichts sehen, weil ich in der System-CSS alle relevanten Werte auf weiß gesetzt habe.
Fahr mal mit der Maus drüber....
Das Bild was ich weiter oben gepostet habe ist nur ein Beispiel aus dem Logs von Drupal.
Tatsächlich verursacht jeder Gast diesen Fehler. Unerheblich ob über einen externen oder internen Referer.
Wenn man eine neue Seite aufruft, ändert sich auch die Zahl, die man laut Meldung ändern soll, ständig.
Deine Beschreibung habe ich nicht verstanden.
Kannst Du es nochmal erklären?
Bei der Funktion user_save(),
am 03.04.2011 - 09:56 Uhr
Bei der Funktion user_save(), ganz am Anfang diese Watchdog-Funktion eintragen, dann hast du die übergebenen Werte und kannst anfangen zu debuggen.
Hallo Tobias, ich weiß das Du
am 03.04.2011 - 12:48 Uhr
Hallo Tobias,
ich weiß das Du Dich bemühst, aber ich habe es noch immer nicht verstanden.
Um keine Fehler zu machen, frage ich lieber noch einmal.
Mir Mysqldumper meine DB öffnen.
Tabelle Watchdog auf bearbeiten und dann....?
Sieh mir meine blöden Fragen nach, ich bin quer in diese ganze Geschichte eingestiegen.
Dank Drupal kann ich heute zwar gute Seiten bauen, aber mir fehlt vielfach noch Basiswissen, dass für Euch Cracks alltäglich ist.
in der Datei
am 03.04.2011 - 13:29 Uhr
in der Datei /modules/user/user.module
Hi, probier folgendes: Mach
am 03.04.2011 - 13:33 Uhr
Hi,
probier folgendes:
Mach ein Backup der User Tabelle.
Loösche den User mit der uid 2 (Fehlermeldung ganz oben).
Rufe die Seite erneut auf.
Der INSERT des users sollte nun funktionieren.
Sollte der Fehler dann endgültig weg sein, kannst Du die alte user
Tabelle wieder einspielen.
Lieber Gruss
Hallo, @Tobias Ich habe den
am 03.04.2011 - 14:52 Uhr
Hallo,
@Tobias
Ich habe den Code in die Datei eingetragen und produziere nur irgendwelchen Syntaxfehler.
Hier die Stelle in der Datei:
<?php
function user_save($account, $array = array(), $category = 'account') {
// Dynamically compose a SQL query:
$user_fields = user_fields();
if (is_object($account) && $account->uid) {
user_module_invoke('update', $array, $account, $category);
$query = '';
$data = unserialize(db_result(db_query('SELECT data FROM {users} WHERE uid = %d', $account->uid)));
// Consider users edited by an administrator as logged in, if they haven't
// already, so anonymous users can view the profile (if allowed).
if (empty($array['access']) && empty($account->access) && user_access('administer users')) {
$array['access'] = time();
?>
Wo genau muss der Code hin.
@Robert
Der User mit der UID 2 existiert überhaupt nicht.
Ich habe dann als Admin in Drupal einen User angelegt und diesem in der DB die UID 2 zugewiesen.
Das Problem besteht fort.....
Der user ist jetzt wieder gelöscht.
Hej, und schon jetzt mal vielen Dank, dass Ihr Euch die Zeit nehmt. Ist wirklich nett....:-)
function user_save($account,
am 03.04.2011 - 15:04 Uhr
function user_save($account, $array = array(), $category = 'account') {
watchdog(....);//HIER
Mann, danke! So, das sehe ich
am 03.04.2011 - 15:46 Uhr
Mann, danke!
So, das sehe ich jetzt in den Log-Einträgen
Wenn ich als Filter Typ "Debug" auswähle...
http://depressionen-abc.com/sites/default/files/shot.jpg
So sieht es bei jedem Gast aus.
Ich kann mit den Infos nicht viel anfangen....
Ich auch nicht. Irgendwas
am 03.04.2011 - 17:58 Uhr
Ich auch nicht. Irgendwas ruft user_save auf und versucht ein User anzulegen. Und du musst jetzt herausfinden, wer das versucht.
Überall tauchte das
am 03.04.2011 - 18:39 Uhr
Überall tauchte das invite-Modul mit auf....
Ich habe den Block "Einen Freund einladen" deaktiviert i ya esta! Die Fehlermeldung ist weg.
Ich danke allen, die mir bei der Lösung des Problems behilflich waren!!! Besonders Tobias.
Allein hätte ich ziemlich dumm da gestanden!
Wat bin ick froh!