Bonjour,
J'ai un problème avec le script suivant :
Script :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 # récupération de l'id clé primaire de la table fungi2 ainsi que du champ accession my $sql0 = "SELECT id, accession FROM fungi2"; my $sth0 = $dbh->prepare($sql0) or print "erreur de preparation SQL\n"; $sth0->execute or die "Could not execute SQL statement ... maybe invalid?"; while (my @row = $sth0->fetchrow_array){ my $ID = $row[0]; my $ACC = $row[1]; # séparation des accessions my @acc_list = split (/ /, $ACC); for my $i (0...$#acc_list){ # 1 accesion = 1 entrée de la table fungi2_accessions # clé primaire de fungi2_consensus = nombre autoincrémenté (num) # champ id de fungi2_consensus = FK liée à PK id de fungi2 my $sql1 = "INSERT INTO fungi2_accessions VALUES ('', '$ID', '$acc_list[$i]')"; my $sth1 = $dbh->prepare($sql1) or print "erreur de preparation SQL\n"; $sth1->execute or die "Could not execute SQL statement ... maybe invalid?"; $sth1->finish; } } $sth0->finish;
Lors du remplissage, voici l'erreur qui apparait :
mysql::st execute failed: Duplicata du champ '32767' pour la clef 1 at rempissage_fungi2_accessions.pl line 42.
Could not execute SQL statement ... maybe invalid? at rempissage_fungi2_accessions.pl line 42.
Aperçu des 2 tables
Problème
Pour l'id 32767 qui n'a qu'un accession dans la table fungi2 et ne devrait donc n'avoir qu'une seule entrée dans fungi2_accessions, le script en crée 2138. Ce qui est étrange, c'est que tout se passe bien lors du remplissage des premières entrées. (cf image)
Une autre remarque mais pas vraiment dérangeante est qu'il commence le remplissage de fungi2_accessions avec un 'Num' à 5 au lieu de 1 (pour le premier id '1')... alors que Num est de type SMALLINT(3) NOT NULL AUTOINCREMENT.
Merci pour votre aide,
Partager