Antworten:
Mein MySQL sagt "Falsche Tabellendefinition; es kann nur eine automatische Spalte geben und sie muss als Schlüssel definiert werden ". Als ich also den Primärschlüssel wie unten 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;
ALTER TABLE book ADD id INT AUTO_INCREMENT NOT NULL, ADD PRIMARY KEY (id);
Die vollständige Fehlermeldung ertönt:
FEHLER 1075 (42000): Falsche Tabellendefinition; Es kann nur eine automatische Spalte geben, die als Schlüssel definiert werden muss
Fügen Sie also primary key
dem auto_increment
Feld hinzu:
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;
Beachten Sie auch, dass "Schlüssel" nicht unbedingt Primärschlü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 erfundenes Beispiel und wahrscheinlich nicht die beste Idee, aber es kann in bestimmten Fällen sehr nützlich sein.
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