Odpowiedzi:
MySQL mówi „Nieprawidłowa definicja tabeli; może być tylko jedna kolumna automatyczna i musi być zdefiniowana jako klucz ”. Po dodaniu klucza podstawowego, jak poniżej, zaczęło działać:
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);
Pełny komunikat o błędzie brzmi:
ERROR 1075 (42000): Niepoprawna definicja tabeli; może istnieć tylko jedna kolumna automatyczna i musi być zdefiniowana jako klucz
Więc dodaj primary key
do auto_increment
pola:
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;
Należy również zauważyć, że „klucz” niekoniecznie oznacza klucz podstawowy . Coś takiego zadziała:
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;
Jest to wymyślony przykład i prawdopodobnie nie jest to najlepszy pomysł, ale w niektórych przypadkach może być bardzo przydatny.
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