Duplicate Entries (users-Tabelle) bei der Userregistrierung
Eingetragen von soezkan (558)
am 23.04.2008 - 10:31 Uhr in
am 23.04.2008 - 10:31 Uhr in
Hallo zusammen,
ich habe meine users-Tabelle mit Testdaten gefüllt (per SQL Befehele, also mehrere INSERT Anweisungen).
Jetzt tritt das Problem auf, dass man sich nicht mehr registrieren kann, da es eine
Fehlermeldung gibt:
user warning: Duplicate entry '41' for key 1 query: INSERT INTO users ....
Mein höchster Wert für die uid ist die 79. Ich dachte natürlich, dass die uid
ein autoincrement Feld ist. Ist sie aber nicht. Woher kommt denn dann die Zahl 41?
Damit meine ich, wo in der DB wird gespeichert, was der höchste uid-Wert in der
users-Tabelle ist??
Ich bin echt am verzweifeln, da ich in der DB nichts finden kann.
1000 Dank für jeden Tipp!!
Soezkan
- Anmelden oder Registrieren um Kommentare zu schreiben
Ich glaube, dass es nie
am 23.04.2008 - 14:11 Uhr
Ich glaube, dass es nie wirklich gut ist, manuell in der DB was zu ändern, weil teilweise noch andere Verweise angelegt werden müssen.
Kann es sein, dass von der DB 40 user angelegt worden waren und Du die user bis zur Nummer 79 manuell eingetragen hast?
Ich hatte mal eine ähnliche Fehlermeldung und bin hier durch Suche im Forum auf die Tabelle "sequences" gestossen. (Allerdings habe ich die in meiner DB gar nicht..). Aber Du kannst ja mal suchen, ob für Dich was dabei ist.
Oder hier: http://www.drupalcenter.de/node/344
An Deiner Stelle würde ich die user von 79 bis 41 manuell in der DB löschen und schauen, ob es dann wieder klappt.
Wenn Du testuser anlegen möchtest, solltest Du das im Admin-Verwaltungsbereich machen.
Gruß, Andrea
"Auto-Int" bei Drupal
am 24.04.2008 - 08:22 Uhr
Hi
leider verwendet Drupal ja keine Autoincrement, statt dessen wird der aktuelle Index in der Tabelle
{sequences}
für die jeweils abgefragte Tabelle gespeichert. Das geschieht über die Funktiondb_next_id($name)
im jeweiligen Datenbank-Script, z. B. ./includes/dabase.mysql.inc (die übrigens immer vorhanden sein muss).Die Lösung für dein Problem ist denkbar einfach, erhöhr den Index in der Tabelle
{sequences}
Zeileusers_id
auf mindestens 80.Gruß
UwBach
Drupal benutzt kein
am 24.04.2008 - 15:13 Uhr
Drupal benutzt kein Auto-Increment, weil es auch die Datenhaltung möglichst unabhängig von Implementierungsdetails der RDBMS halten will, um grundsätzlich auf beliebigen SQL-Datenbanken eingesetzt werden zu können.
Aufgrund der Verbreitung von MySQL hat sich bei vielen der Irrglaube gefestigt, der Spaltentyp AUTO_INCREMENT gehöre zum ANSI SQL Standard. Dem ist nicht so. Dies ist lediglich eine Vereinfachung, die MySQL aus geschichtlichen Gründen mitbringt. In "normalen" RDBMS (PostreSQL, Oracle, IBM DB2, ..) werden dererlei Funktionalitäten über Sequenzen abgebildet.
Drupal arbeitet mit einer eigenen Tabelle 'sequences', um datenbankseitig weder die eine noch die andere Implementierung vorauszusetzen.
--
"Look, Ma, I'm dead!"
Cell, Stephen King
Suchmaschinenoptimierung (SEO) & Drupal