Je deviens fou !!
Je suis tout content de pouvoir --enfin-- communiquer avec une base de données.
Dedans j'ai mis des références à des fichiers se trouvant sur le disque dur.
L'application est censée ajouter certaines infos en provenance de ces fichiers dans la base de données si elles ne s'y trouvent pas déjà.
Pour pouvoir déterminer si ces infos s'y trouvent déjà je parcours un champs 'Hash' qui contient un md5sum.
J'ai exécuté 6858555454564654 fois le code et toujours obtenu les même hashes:
...je l'exécute de nouveau...[DEBUG][parsefolders] HASH d4d02ac03000f7442a2650d22c0eefb4
[DEBUG][parsefolders] HASH 24576187ab81f1079cd899e3fb1f2be3
[DEBUG][parsefolders] HASH beb6b85e19aa6f40584ab16ea478817b
[DEBUG][parsefolders] HASH 285cb1dbb0a2fa615cc71d0bf9d16e80
[DEBUG][parsefolders] HASH 8b152a413e124945d795914bd8c70b62
[DEBUG][parsefolders] HASH 327ddbc3b0b0d7afc3243d43142bbc04
[DEBUG][parsefolders] HASH a81d2d7c5e6bab6e9fba3b2297b8d80f
[DEBUG][parsefolders] HASH 3793d81f6d76fa48d87c49791b2fe9a7
[DEBUG][parsefolders] HASH 102595f8961393e0a33e8d4d46315d7e
... allez un dernier pour la route...[DEBUG][parsefolders] HASH d4d02ac03000f7442a2650d22c0eefb4
[DEBUG][parsefolders] HASH 24576187ab81f1079cd899e3fb1f2be3
[DEBUG][parsefolders] HASH beb6b85e19aa6f40584ab16ea478817b
[DEBUG][parsefolders] HASH 285cb1dbb0a2fa615cc71d0bf9d16e80
[DEBUG][parsefolders] HASH 8b152a413e124945d795914bd8c70b62
[DEBUG][parsefolders] HASH 327ddbc3b0b0d7afc3243d43142bbc04
[DEBUG][parsefolders] HASH a81d2d7c5e6bab6e9fba3b2297b8d80f
[DEBUG][parsefolders] HASH 3793d81f6d76fa48d87c49791b2fe9a7
[DEBUG][parsefolders] HASH 102595f8961393e0a33e8d4d46315d7e
Donc je me dis: c'est bon c'est bien la signature des infos donc si dans ma base de données je ne trouve pas un hash ça veut dire que le fichier a été ajouté sur le disque dur et qu'il faut insérer les infos probantes dans la table de la base de données...[DEBUG][parsefolders] HASH d4d02ac03000f7442a2650d22c0eefb4
[DEBUG][parsefolders] HASH 24576187ab81f1079cd899e3fb1f2be3
[DEBUG][parsefolders] HASH beb6b85e19aa6f40584ab16ea478817b
[DEBUG][parsefolders] HASH 285cb1dbb0a2fa615cc71d0bf9d16e80
[DEBUG][parsefolders] HASH 8b152a413e124945d795914bd8c70b62
[DEBUG][parsefolders] HASH 327ddbc3b0b0d7afc3243d43142bbc04
[DEBUG][parsefolders] HASH a81d2d7c5e6bab6e9fba3b2297b8d80f
[DEBUG][parsefolders] HASH 3793d81f6d76fa48d87c49791b2fe9a7
[DEBUG][parsefolders] HASH 102595f8961393e0a33e8d4d46315d7e
...et bien non... les hashes changent...
Je n'ai AUCUN hash correspondant à ceux listés dans la base de données pourtant ces fichiers là n'ont PAS ETE AJOUTES...
...donc mon programme ajoute des données déjà présentes et je me retrouve avec des doublons :{ (je devrais avoir 6175 tuples en tout et pour tout et je me retrouve avec 12350 tuples donc le double alors que je n'ai ajouté aucun fichier sur le disque dur).MariaDB [TableauDeChasse]> MariaDB [TableauDeChasse]> select idComment, CAST(Comment AS VARCHAR(160)), Hash, Next_Comment FROM Comments WHERE Hash='a81d2d7c5e6bab6e9fba3b2297b8d80f';
Empty set (0.001 sec)
Je vais rechercher la date de modification du fichier dans les metadatas et je lui concatène le chemin vers ce fichier.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 let rc_epoch :std::time::SystemTime = fichier.as_ref().unwrap().metadata().unwrap().modified().unwrap(); let datastohash = String::from(format!("{:?}",rc_epoch)+format!("{:?}",fichier.unwrap().path().clone().as_os_str()).as_str()); //eprintln!("[DEBUG][parsefolders] datastohash {}", datastohash.bright_red()); let digest = md5::compute(datastohash); mappade.Hash = format!("{:48x}", digest).to_string(); eprintln!("[DEBUG][parsefolders] HASH {}", mappade.Hash.bright_green()); MAPPED.push(mappade.clone());
Dans ma base de données le champs Hash est UNIQUE...
Je vais vérifier si après avoir rebooté/fait un log out les hashes sont toujours les mêmes, j'ai un doute là...MariaDB [TableauDeChasse]> describe Comments;
+--------------+----------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------------+----------------------+------+-----+---------+----------------+
| idComment | smallint(5) unsigned | NO | PRI | NULL | auto_increment |
| Comment | varchar(255) | YES | | Rien | |
| Hash | varchar(48) | YES | UNI | NULL | |
| Next_Comment | smallint(5) unsigned | YES | | 0 | |
+--------------+----------------------+------+-----+---------+----------------+
[EDIT]
Non, ils sont toujours les mêmes... je n'y comprends rien.
Je vais tout réinjecter dans la base de données et comparer les hashes...
Partager