Problème avec AUTO_INCREMENT ou primary key ?
Résolu
madeinloveyou
Messages postés
61
Date d'inscription
Statut
Membre
Dernière intervention
-
sandul Messages postés 3927 Date d'inscription Statut Membre Dernière intervention -
sandul Messages postés 3927 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je travail sur java avec mysql. Je n'arrive à insérer mes données !!!
Problème suremnt lié au primary key car il me sort une erreur de type "duplicate ..." alors ke
pas du tout (j'ai essayé avec INNODB, mais je connai pas gran chose là dessus !), et lorque
j'essaye de mettre un AUTO_INCREMENT ... ça me donne:
parameter index out of range (8 > number of parameters which is 7)
Voici ma table :
Voici mon code pour insérer les données :
Si quelqu'un aurait la gentillesse de m'aider
Merci d'avance
Je travail sur java avec mysql. Je n'arrive à insérer mes données !!!
Problème suremnt lié au primary key car il me sort une erreur de type "duplicate ..." alors ke
pas du tout (j'ai essayé avec INNODB, mais je connai pas gran chose là dessus !), et lorque
j'essaye de mettre un AUTO_INCREMENT ... ça me donne:
parameter index out of range (8 > number of parameters which is 7)
Voici ma table :
CREATE table HOMOLOGIE(UG Varchar(20), GID Varchar(20), IDoligo Varchar(20), score Float(4,1), percent Float(5,2), length Int(8), nbmeralign Int(3), primary key(IDoligo,UG));
Voici mon code pour insérer les données :
else { String []tab = new String[10]; pstmt = connexion.prepareStatement ("SELECT COUNT(*) Number FROM HOMOLOGIE"); ResultSet rs = pstmt.executeQuery(); rs.next(); int idunik = rs.getInt("Number")+1; // je m'en servait pour mettre un identifiant ... mais plus m1tenant ! do { tab = Line.split("\t"); // tab contient : // 0 ~ oligo / 1 ~ genbank / 2 ~ GI / 3 ~ UG / 4 ~ length / 5 ~ score / 6 ~ percent / 7 ~ align try { float floatscore = Float.parseFloat(tab[5]); float floatpercent = Float.parseFloat(tab[6]); int intalign = Integer.parseInt(tab[7]); if (intalign == 70){ if (floatpercent >= 100.0){ if (floatscore >= 130.0){ if (tab[3].equals("null") == false){ test = true; System.out.println(floatscore+" "+floatpercent+" "+intalign); } } } } } catch (Exception exp){ } if(test == true) { pstmt = connexion.prepareStatement ("INSERT INTO HOMOLOGIE (UG,GID,IDoligo,score,percent,length,nbmeralign) VALUES (?,?,?,?,?,?,?)"); if(tab[3].equals("null")) pstmt.setNull(1, java.sql.Types.NULL); else pstmt.setString(2, tab[3]); if(tab[0].equals("null")) pstmt.setNull(1, java.sql.Types.NULL); else pstmt.setString(3, tab[2]); if(tab[2].equals("null")) pstmt.setNull(1, java.sql.Types.NULL); else pstmt.setString(4, tab[0]); if(tab[5].equals("null")) pstmt.setNull(1, java.sql.Types.NULL); else pstmt.setFloat(5, Float.parseFloat(tab[5])); if(tab[6].equals("null")) pstmt.setNull(1, java.sql.Types.NULL); else pstmt.setFloat(6, Float.parseFloat(tab[6])); if(tab[4].equals("null")) pstmt.setNull(1, java.sql.Types.NULL); else pstmt.setInt(7, Integer.parseInt(tab[4])); if(tab[7].equals("null")) pstmt.setNull(1, java.sql.Types.NULL); else pstmt.setInt(8, Integer.parseInt(tab[7])); rows = pstmt.executeUpdate(); pstmt = connexion.prepareStatement("INSERT INTO GENE (GI,GenBank) VALUES(?,?)"); f(!tab[2].equals("null")) pstmt.setString(1, tab[2]); if(!tab[1].equals("null")) pstmt.setString(2, tab[1]); rows = pstmt.executeUpdate(); } test=false; } while ((Line = buffR.readLine()) != null);
Si quelqu'un aurait la gentillesse de m'aider
Merci d'avance
A voir également:
- Problème avec AUTO_INCREMENT ou primary key ?
- Key windows 10 - Guide
- Wic reset key 16 characters free ✓ - Forum Imprimante
- Show key plus - Télécharger - Utilitaires
- Press the esc key for startup menu - Forum Matériel & Système
- Fichier .key ✓ - Forum MacOS
30 réponses
Arf. Résumons:
1. Tu as ta PK en primary key et les valeurs sont bien différentes. Pourquoi dis-tu alors
Regarde c sa mé deux entrée dupliquées !!!
| 423 | Bt.87413 | 156041716 | Bt00001797 | 139.0 | 100.00 | 698 | 70 |
| 582 | Bt.87413 | 156041716 | Bt00007507 | 139.0 | 100.00 | 698 | 70 |
Les entrées ne sont pas "dupliquées".
2. J'ai remarqué dans un post précédent cette remarque
par contre j'ai essayé VALUES(NULL,?,?,?,?,?,?,?)
et ca me met : Column count doesn't match value count at row 1
Rassure-moi que tu as bien essayé avec un
++
1. Tu as ta PK en primary key et les valeurs sont bien différentes. Pourquoi dis-tu alors
Regarde c sa mé deux entrée dupliquées !!!
| 423 | Bt.87413 | 156041716 | Bt00001797 | 139.0 | 100.00 | 698 | 70 |
| 582 | Bt.87413 | 156041716 | Bt00007507 | 139.0 | 100.00 | 698 | 70 |
Les entrées ne sont pas "dupliquées".
2. J'ai remarqué dans un post précédent cette remarque
par contre j'ai essayé VALUES(NULL,?,?,?,?,?,?,?)
et ca me met : Column count doesn't match value count at row 1
Rassure-moi que tu as bien essayé avec un
INSERT IGNORE INTO HOMOLOGIE (IDunik, UG,GID,IDoligo,score,percent,length,nbmeralign) // 8 colonnes VALUES(NULL,?,?,?,?,?,?,?) // 8 valeurs, NULL compris
++
kan je di c sa mé entrées dupliké je repette just ce que ca me ressort comm erreur !!!
Pour ces 2 entrée il me sort que c dupliqué alors ke ca ne l'ai pas !!!
kes tu veu dire par 8 valeur +NULL ...?
Pour ces 2 entrée il me sort que c dupliqué alors ke ca ne l'ai pas !!!
kes tu veu dire par 8 valeur +NULL ...?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
L'erreur à l'exécution est une erreur à l'exécution. Donc ça ne concerne pas tes données existantes uniquement, mais en ensemble constitué des données existantes PLUS la nouvelle ligne (qui, elle, est en échec). Une fois l'erreur obtenue, le fait de consulter la base ne permet pas de savoir quelle était la ligne pour laquelle l'INSERT a échoué (car l'opération a déjà été rollbackée).
Donc, pour comprendre ce que tu obtiens comme erreur: La ligne que tu veux rajouter contient en position de la primary key une valeur parmi les valeurs se trouvant dans la base de données au momeent de l'insert.
kes tu veu dire par 8 valeur +NULL ...? <==
7 points d'interrogation et le NULL
Donc, pour comprendre ce que tu obtiens comme erreur: La ligne que tu veux rajouter contient en position de la primary key une valeur parmi les valeurs se trouvant dans la base de données au momeent de l'insert.
kes tu veu dire par 8 valeur +NULL ...? <==
7 points d'interrogation et le NULL
j'ai remarqué ke a la main ca marche :
insert into HOMOLOGIE values (201,'Bt.87413','156041716','Bt00007507',139.0,100.00,698,70);
| 35 | Bt.87413 | 156041716 | Bt00001797 | 139.0 | 100.00 | 698 | 70 |
| 194 | Bt.87413 | 156041716 | Bt00007507 | 139.0 | 100.00 | 698 | 70 |
| 200 | Bt.87413 | 156041716 | Bt00001797 | 139.0 | 100.00 | 698 | 70 |
| 201 | Bt.87413 | 156041716 | Bt00007507 | 139.0 | 100.00 | 698 | 70 |
et g regardé la ligne d'apres :
Bt00007522 XM_866098 194671954 Bt.64896 1548 139 100 70
donc en effet il a bien du rentrer les données meme si il me sort dupliqué !!
ca viendrai du code java alors ???
insert into HOMOLOGIE values (201,'Bt.87413','156041716','Bt00007507',139.0,100.00,698,70);
| 35 | Bt.87413 | 156041716 | Bt00001797 | 139.0 | 100.00 | 698 | 70 |
| 194 | Bt.87413 | 156041716 | Bt00007507 | 139.0 | 100.00 | 698 | 70 |
| 200 | Bt.87413 | 156041716 | Bt00001797 | 139.0 | 100.00 | 698 | 70 |
| 201 | Bt.87413 | 156041716 | Bt00007507 | 139.0 | 100.00 | 698 | 70 |
et g regardé la ligne d'apres :
Bt00007522 XM_866098 194671954 Bt.64896 1548 139 100 70
donc en effet il a bien du rentrer les données meme si il me sort dupliqué !!
ca viendrai du code java alors ???