Ответы:
Мой MySQL говорит: «Неправильное определение таблицы; может быть только один автоматический столбец, и он должен быть определен как ключ ». Поэтому, когда я добавил первичный ключ, как показано ниже, он начал работать:
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);
Полное сообщение об ошибке звучит:
ОШИБКА 1075 (42000): неправильное определение таблицы; может быть только один автоматический столбец, и он должен быть определен как ключ
Так что добавьте primary key
в auto_increment
поле:
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;
Также обратите внимание, что «ключ» не обязательно означает первичный ключ. Примерно так будет работать:
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;
Это надуманный пример и, вероятно, не лучшая идея, но в некоторых случаях он может быть очень полезен.
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