如何糾正從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;
如何糾正從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;
我的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;
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
完整的錯誤消息聽起來:
ERROR 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;
如果此錯誤的Wi發生在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);
不要忘記添加主鍵字段....!
還要注意的是「鑰匙」並不一定意味着主鍵。像這樣將工作:
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;
這是一個人爲的例子,可能不是最好的辦法,但它可以在某些情況下非常有用的。
如果列是複合鍵的一部分,那麼正確的操作過程是什麼? – Nubcake 2017-09-20 18:13:54