Automatisches Inkrementieren in phpmyadmin


94

Ich habe eine vorhandene Datenbank mit PHP, MySQL und phpMyAdmin.

Wenn Benutzer Mitglied auf meiner Website werden, muss das System eine eindeutige Mitgliedsnummer für sie mit einer fünfstelligen Nummer erstellen. für zB 83773. Ich denke, es ist wie ein zufälliges Passwort zu generieren, außer ich möchte nur Zahlen für meine Mitglieder. Diese ID-Nummer muss für jedes Mitglied eindeutig sein.

Wäre es mir möglich, den Primärschlüssel in meiner Benutzertabelle auf auto_increment zu setzen und ihn auf 10000 zu starten und dann jedes Mal automatisch zu erhöhen, wenn sich ein Mitglied registriert?

Gibt es auch eine maximale Anzahl, bis zu der die Primärschlüssel-ID-Nummer steigen würde?

Ist dies eine zuverlässige und sichere Möglichkeit, die Primärschlüssel-ID als Mitgliedsnummer zu verwenden?


3
Einige der unten aufgeführten Personen antworteten, dass es keine Obergrenze für den Primärschlüssel gibt, aber ich würde annehmen, dass die Obergrenze die maximale Größe des von Ihnen ausgewählten Datentyps ist ... Vielleicht irre ich mich, wäre es aber nicht dann auf einen Maximalwert von 4294967295 begrenzt? dev.mysql.com/doc/refman/5.0/en/numeric-types.html
Sam

Bitte holen Sie sich die akzeptierte Antwort. Ich denke, dies ist der eine stackoverflow.com/a/18942684/248616
Nam G VU

Antworten:


201

Es gibt mögliche Schritte, um das automatische Inkrementieren für eine Spalte zu aktivieren. Ich denke, die phpMyAdmin-Version ist 3.5.5, aber nicht sicher.

Klicken Sie auf Tabelle > Registerkarte Struktur > Klicken Sie unter Aktion auf Primär (als Primär festgelegt) auf Ändern im Popup-Fenster, scrollen Sie nach links und aktivieren Sie A_I . Stellen Sie außerdem sicher, dass Sie Keine als Standard ausgewählt habenGeben Sie hier die Bildbeschreibung ein


5
Da die Auto-Inc-Funktion von der Registerkarte "Vorgänge" entfernt wurde, wird sie anscheinend jetzt so implementiert. Danke, @AmitKB.
Mike S.

2
Als ich jedoch versuchte, dass ich diesen Fehler bekam: Query error: #1075 - Incorrect table definition; there can be only one auto column and it must be defined as a key
Yaakov Ainspan

Die Meldung ist klar. Möglicherweise versuchen Sie, mehr als eine automatische Spalte zu verwenden.
Amit Bhagat

1
Hatte ein ähnliches Problem und dies hat mein Problem
behoben

1
Wow, so einfach. Warum hat das niemand erwähnt? Ich habe so lange gebraucht, um eine solche Antwort zu finden. bei weitem die beste Antwort.
Oldboy

52

Navigieren Sie in phpMyAdmin zu der betreffenden Tabelle und klicken Sie auf die Registerkarte "Vorgänge". Links unter Tabellenoptionen können Sie den aktuellen Wert für AUTO_INCREMENT festlegen.


5
Wenn ich dies tue, sind meine einzigen zwei Optionen zum Hinzufügen von auto_increment "Tabelle verschieben nach" oder "Tabelle kopieren nach". Ich möchte die Tabelle weder verschieben noch kopieren, sondern einfach auto_increment hinzufügen. Was ist los?? Ich benutze MySQL v5.6.
Oldboy

@oldboy Ich bekomme das gleiche wie du. Vielleicht haben sie die Funktion in neueren Versionen von XAMPP
PhpMyAdmin

21

Führen Sie einfach eine einfache MySQL-Abfrage aus und stellen Sie die automatische Inkrementierungsnummer auf die gewünschten Werte ein.

ALTER TABLE `table_name` AUTO_INCREMENT=10000

In Bezug auf ein Maximum gibt es meines Wissens weder eines noch eine Möglichkeit, diese Anzahl zu begrenzen.

Es ist absolut sicher und üblich, eine ID-Nummer als Primärschlüssel festzulegen und int automatisch zu inkrementieren. Es gibt Alternativen wie die Verwendung von PHP, um Mitgliedsnummern für Sie in einem bestimmten Format zu generieren und dann zu überprüfen, ob die Nummer vor dem Einfügen nicht vorhanden ist. Für mich persönlich würde ich jedoch die primäre ID auto_inc verwenden.


10
  1. In der Registerkarte "Struktur" Ihrer Tabelle
  2. Klicken Sie auf den Stift der Variablen, die Sie automatisch inkrementieren möchten
  3. Wählen Sie auf der Registerkarte "Extra" die Option "auto_increment".
  4. Gehen Sie dann zur Registerkarte "Operationen" Ihrer Tabelle
  5. Unter "Tabellenoptionen" -> auto_increment Typ -> 10000

2

Wenn Sie in phpMyAdmin ein Feld in Ihrer Tabelle so einrichten, dass es automatisch inkrementiert wird, und dann eine Zeile einfügen und den Wert dieses Felds auf 10000 setzen, wird es von dort aus fortgesetzt.


2

@AmitKB, Ihr Verfahren ist korrekt. Obwohl dieser Fehler

Abfragefehler: # 1075 - Falsche Tabellendefinition; Es kann nur eine automatische Spalte geben, die als Schlüssel definiert werden muss

Sie können das Problem lösen, indem Sie das Feld zuerst als Schlüssel markieren (mithilfe des Schlüsselsymbols mit der Bezeichnung "Primär"). Wenn Sie keinen anderen Schlüssel haben, funktioniert dies möglicherweise nicht.


Es ist so lange her, dass ich mit phpMyAdmin gespielt habe, dass ich vergessen habe, wie das geht. Vielen Dank für die Behebung dieses sekundären Problems. Es hat bei mir funktioniert.
rncrtr

0

Sie können keinen Maximalwert festlegen (außer die Auswahl eines Datentyps, der keine großen Zahlen enthalten kann, aber es gibt keinen, der das gewünschte Limit hat). Sie können dies mit LAST_INSERT_ID () nach dem Einfügen überprüfen, um die ID des neu erstellten Mitglieds abzurufen, und wenn es zu groß ist, behandeln Sie es in Ihrem Anwendungscode (z. B. löschen und ablehnen Sie das Mitglied).

Warum willst du eine Obergrenze?


0

Dies ist auf die wp_terms, wp_termmetaund wp_term_taxonomyTabellen, die alle hatten ihre ID ist nicht gesetztAUTO_INCREMENT

Gehen Sie dazu zu phpmyadmin, klicken Sie auf die betreffende Datenbank, wp_termsTabelle, klicken Sie auf die Registerkarte Struktur. Auf der rechten Seite sehen Sie eine Registerkarte mit dem Namen A_I(AUTO_INCREMENT), überprüfen Sie sie und speichern Sie sie (Sie tun dies nur für die erste Option, falls wp_termSie dies tun nur für term_id).

Machen Sie dasselbe für wp_termmetaund wp_term_taxonomydas wird das Problem beheben.


Anscheinend denken Sie, dass das OP WordPress verwendet. Wo haben Sie diese Informationen gefunden? Ich kann in der Frage keine Verweise auf WP finden.
Raul Sauco

0

(a) Klicken Sie einfach auf Ihre Datenbank und wählen Sie Ihre Tabelle aus. Klicken Sie auf "Operationen". Ändern Sie im Abschnitt 'Tabellenoptionen' den Wert AUTO_INCREMENT auf den gewünschten Wert. In diesem Fall: 10000 Klicken Sie auf 'Los'. (Siehe das beigefügte Bild)

(b) Alternativ können Sie nach Auswahl Ihrer Tabelle einen SQL-Befehl auf der Registerkarte SQL ausführen. Geben Sie einfach 'ALTER TABLE table_name AUTO_INCREMENT = 10000;' Klicken Sie dann auf "Los". Das ist es!! EINSTELLEN DES AUTOMATISCHEN ERHÖHUNGSWERTES Bild (a)

EINSTELLEN DES AUTOMATISCHEN ERHÖHUNGSWERTES Bild (B)

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.