Может быть только одна автоматическая колонка
Как исправить ошибку из MySQL "у вас может быть только один столбец автоматического приращения".
CREATE TABLE book (
id INT AUTO_INCREMENT NOT NULL,
accepted_terms BIT(1) NOT NULL,
accepted_privacy BIT(1) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
5 ответов:
Мой 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;
Звучит полное сообщение об ошибке:
Ошибка 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 ( 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;
Если эта ошибка произойдет в CodeIgniter:
$fields=array( 'slno' => array( 'type' => 'int', 'constraint' => 255, 'unsigned' => TRUE, 'auto_increment' => TRUE ), 'node_id' => array( 'type' => 'int', 'constraint' => 255, 'unsigned' => TRUE ), 'node' => array( 'type' => 'text', 'null' => TRUE ) ); $this->dbforge->add_field($fields); $this->dbforge->add_key("slno",TRUE); $this->dbforge->create_table($key,TRUE);
Не забудьте добавить поле первичного ключа....!