valeur ID dans MySql

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : valeur ID dans MySql

par cmoi » 17 oct. 2007, 11:35

j'ai finalement résolu mon problème.
IL y avait des doublons, donc pas de clé primaire, donc pas d'auto-incrément.

Merci à tous.

par d0m » 17 oct. 2007, 11:25

and it must be defined as a key
comme le dis l'erreur, ton champ doit être défini comme clé.

par cmoi » 17 oct. 2007, 11:20

Quand je veux modifier la structure, j'obtiens ça :

Erreur
requête SQL:

ALTER TABLE `sites_v234` CHANGE `id` `id` MEDIUMINT( 8 ) UNSIGNED NOT NULL AUTO_INCREMENT

MySQL a répondu:

#1075 - Incorrect table definition; there can be only one auto column and it must be defined as a key

par Sékiltoyai » 17 oct. 2007, 11:02

Ton champ id doit être un champ de type entier, muni d'une clé primaire pour pouvoir être auto-incrémenté, soit par exemple :

Code : Tout sélectionner

id MEDIUMINT(8) UNSIGNED AUTO_INCREMENT PRIMARY
(ici les attributs NOT NULL et DEFAULT sont ignorés par le serveur)

par cmoi » 17 oct. 2007, 10:50

Voilà la structure de ma table :

Code : Tout sélectionner

Structure de la table 'sites_v234' -- CREATE TABLE sites_v234 ( id mediumint(8) unsigned NOT NULL default '0', id_cat mediumint(8) unsigned NOT NULL, titre varchar(100) NOT NULL, titre2 varchar(100) default NULL, titre3 varchar(100) default NULL, description varchar(255) NOT NULL, url varchar(150) NOT NULL, url_image varchar(150) default '', url_rss varchar(150) default NULL, nom_proprio varchar(50) NOT NULL, email_proprio varchar(75) NOT NULL, date_validation date NOT NULL, activation tinyint(1) NOT NULL default '1', niveau tinyint(1) unsigned NOT NULL default '5', nb_clics mediumint(8) unsigned NOT NULL default '0', moyenne_votes decimal(4,2) unsigned NOT NULL default '0.00', nb_votes mediumint(8) unsigned NOT NULL default '0', nb_com mediumint(8) unsigned NOT NULL default '0' ) ENGINE=MyISAM DEFAULT CHARSET=latin1;

par Hubert Roksor » 17 oct. 2007, 10:46

clairement je dois faire quoi ?? :(
Commencer par apprendre les bases :?: Commence par le manuel aux chapitres 11, 13 et 12. Ça te donnera 90% de ce dont tu as besoin, notamment SHOW CREATE TABLE.

par Ryle » 17 oct. 2007, 10:45

Poste le schéma de ta table sous la forme d'une instruction CREATE TABLE.
clairement je dois faire quoi ?? :(
Clairement, il te demande de poster le script de création de la table en question.

Le plus simple étant sous phpMyAdmin d'exporter la structure de la table, ce qui permet d'avoir toutes les infos sur les champs, les types, les tailles, les attributs, etc. :)

par d0m » 17 oct. 2007, 10:38

l'auto-incrémentation est comme son nom l'indique justement fait pour "d'ajouter 1 à chaque nouvel enregistrement".

Si il n'est pas spécifié, la base ne va pas le faire tout seul quand tu insères un nouvel enregistrement.
Il va donc falloir le faire toi même c'est à dire lors de l'insertion lui préciser la valeur du champ id (sinon celui ci prendra la valeur par défaut qui est apparement 0 chez toi)

Il faut donc avant d'insérer faire une requête de type SELECT qui va obtenir le max de tes ids dans la table. Tu l'incrémente d'1 et tu insère ensuite ton enregistrement en précisant le champ id à cette nouvelle valeur.

par cmoi » 17 oct. 2007, 10:31

le champ id n'est pas en auto-incrément et je ne peux le mettre.

son type est mediumint
ses attributs : unsigned

par d0m » 17 oct. 2007, 10:27

clairement je dois faire quoi ??
nous donner la structure de ta table.

Ton champ index id est bien en auto_increment?

par cmoi » 17 oct. 2007, 10:03

Poste le schéma de ta table sous la forme d'une instruction CREATE TABLE.
clairement je dois faire quoi ?? :(

par Hubert Roksor » 17 oct. 2007, 09:30

Poste le schéma de ta table sous la forme d'une instruction CREATE TABLE.

valeur ID dans MySql

par cmoi » 17 oct. 2007, 09:20

Bonjour,

j'ai un souci avec ma base MySql où, pour une raison que je ne comprends pas, les ID ne s'incrémentent plus et restent à 0.

Y a-t-il (sûrement !!) une fonction, qui permette, de repartir d'une valeur et d'ajouter 1 à chaque nouvel enregistrement ?

Merci pour votre aide.