it-swarm.com.de

Es kann nur eine automatische Spalte geben

Wie korrigiere ich den Fehler in MySQL? "Sie können nur eine Auto-Inkrement-Spalte haben".

CREATE TABLE book (
   id INT AUTO_INCREMENT NOT NULL,
   accepted_terms BIT(1) NOT NULL,
   accepted_privacy BIT(1) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
91
BuddyJoe

Mein MySQL sagt "Falsche Tabellendefinition; es kann nur eine automatische Spalte geben nd diese muss als Schlüssel definiert sein" Als ich also den Primärschlüssel wie folgt hinzufügte, fing es an zu funktionieren:

CREATE TABLE book (
   id INT AUTO_INCREMENT NOT NULL,
   accepted_terms BIT(1) NOT NULL,
   accepted_privacy BIT(1) NOT NULL,
   primary key (id)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
101
emstol

Die vollständige Fehlermeldung ertönt:

FEHLER 1075 (42000): Falsche Tabellendefinition; Es kann nur eine Auto-Spalte geben und diese muss als Schlüssel definiert sein

Fügen Sie also primary key In das Feld auto_increment Ein:

CREATE TABLE book (
   id INT AUTO_INCREMENT primary key NOT NULL,
   accepted_terms BIT(1) NOT NULL,
   accepted_privacy BIT(1) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
31
TMS

Beachten Sie auch, dass "Schlüssel" nicht unbedingt Primär Schlüssel bedeutet. So etwas wird funktionieren:

CREATE TABLE book (
    isbn             BIGINT NOT NULL PRIMARY KEY,
    id               INT    NOT NULL AUTO_INCREMENT,
    accepted_terms   BIT(1) NOT NULL,
    accepted_privacy BIT(1) NOT NULL,
    INDEX(id)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

Dies ist ein ausgedachtes Beispiel und wahrscheinlich nicht die beste Idee, kann aber in bestimmten Fällen sehr nützlich sein.

6
Matthew Read
CREATE TABLE book (
   id INT AUTO_INCREMENT primary key NOT NULL,
   accepted_terms BIT(1) NOT NULL,
   accepted_privacy BIT(1) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1
5
Deept Raghav