127 votes

Il ne peut y avoir qu'une seule colonne automatique

Comment puis-je corriger l'erreur de MySQL "vous ne pouvez avoir qu'une seule colonne auto incrémentée".

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;

137voto

emstol Points 591

Mon MySQL dit "Définition de table incorrecte ; il ne peut y avoir qu'une seule colonne automatique". et il doit être défini comme une clé " Donc quand j'ai ajouté la clé primaire comme ci-dessous, cela a commencé à fonctionner :

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;

41voto

TMS Points 17522

Le message d'erreur complet retentit :

ERREUR 1075 (42000) : Définition de table incorrecte ; il ne peut y avoir qu'une seule colonne automatique et elle doit être définie comme une clé.

Alors, ajoutez primary key à la auto_increment champ :

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;

18voto

Matthew Read Points 474

Notez également que "clé" ne signifie pas nécessairement primaire clé. Quelque chose comme ceci fonctionnera :

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;

Il s'agit d'un exemple artificiel et probablement pas de la meilleure idée, mais il peut être très utile dans certains cas.

5voto

Raghav Bhushan Points 800
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

0voto

ShivarajRH Points 343

Si cette erreur se produit dans 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);

N'oubliez pas d'ajouter le champ de clé primaire.... !

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X