Câu trả lời:
My MySQL cho biết "Định nghĩa bảng không chính xác; chỉ có thể có một cột tự động và nó phải được định nghĩa là một khóa " Vì vậy, khi tôi thêm khóa chính như bên dưới, nó bắt đầu hoạt động:
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);
Thông báo lỗi đầy đủ sẽ phát ra:
ERROR 1075 (42000): Định nghĩa bảng không chính xác; chỉ có thể có một cột tự động và nó phải được xác định là một khóa
Vì vậy, hãy thêm primary key
vào auto_increment
trường:
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;
Cũng lưu ý rằng "chìa khóa" không nhất thiết có nghĩa là chính quan trọng. Một cái gì đó như thế này sẽ hoạt động:
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;
Đây là một ví dụ giả tạo và có lẽ không phải là ý tưởng hay nhất, nhưng nó có thể rất hữu ích trong một số trường hợp nhất định.
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