2011-12-27 28 views
64

Làm cách nào để sửa lỗi từ MySQL 'bạn chỉ có thể có một cột tăng tự động'.Chỉ có thể có một cột tự động

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; 

Trả lời

74

MySQL tôi nói "định nghĩa bảng không đúng, có thể chỉ có một ô tô cột và nó phải được định nghĩa như là một chìa khóa "vì vậy, khi tôi đã thêm khóa chính như sau nó bắt đầu làm việc:

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; 
+2

Hành động chính xác nếu cột là một phần của khóa tổng hợp? – Nubcake

6
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 
26

Thông báo lỗi đầy đủ âm thanh:

ERROR 1075 (42000): định nghĩa bảng không đúng; có thể chỉ có một cột tự động và nó phải được định nghĩa như là một chìa khóa

Vì vậy, thêm primary key đến auto_increment lĩnh vực:

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; 
-2

Nếu wi lỗi này ll xảy ra trong 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); 

Đừng quên thêm trường khóa chính ....!

2

Cũng lưu ý rằng "khóa" không nhất thiết có nghĩa là khóa chính. 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ụ được tạo ra 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.

Các vấn đề liên quan