Yanıtlar:
MySQL, "Yanlış tablo tanımı; yalnızca bir otomatik sütun olabilir ve bir anahtar olarak tanımlanmalıdır " diyor. Bu nedenle, aşağıdaki gibi birincil anahtar eklediğimde çalışmaya başladı:
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);
Tam hata mesajı duyulur:
HATA 1075 (42000): Hatalı tablo tanımı; yalnızca bir otomatik sütun olabilir ve bir anahtar olarak tanımlanmalıdır
Yani eklemek primary key
için auto_increment
Kime:
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;
Ayrıca "anahtar" ın mutlaka birincil anahtar anlamına gelmediğini unutmayın . Bunun gibi bir şey çalışacak:
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;
Bu uydurma bir örnek ve muhtemelen en iyi fikir değil, ancak bazı durumlarda çok faydalı olabilir.
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