You are not logged in.

Announcement

 Téléchargez la dernière version stable de GLPI      -     Et vous, que pouvez vous faire pour le projet GLPI ? :  Contribuer
 Download last stable version of GLPI                      -     What can you do for GLPI ? :  Contribute

#1 2018-09-20 13:38:47

fabibus
Member
From: Nantes
Registered: 2008-02-05
Posts: 171

Soucis suppression systeme exploitation par GLPI et sql_error.log

Bonjour,

Mon serveur est en GLPI 9.2.2 avec fusioninventory en 9.2+2.1.
Je veux migrer en 9.3.1 mais fait un peu les poussières au niveau des logs.
J'ai des ordinateurs qui ont plusieurs OS (entre 1 et 5 OS) du style "Windows 10.1111" et d'autres en "Windows" avec comme version "10.1111".
Impossible de supprimer plusieurs OS par une action multiple (affiche succès mais ne fait rien). En allant dans chaque OS, je peux les supprimer...

Dans le fichier sql_error.log j'ai pleins d'erreurs (dépendant des remontées fusioninventory) du style  :

sql_error.log wrote:

2018-09-20 13:29:24 [11701@Monserveur]
  *** MySQL query error:
  SQL: INSERT
                   INTO `glpi_items_operatingsystems` (`itemtype`,`items_id`,`operatingsystemarchitectures_id`,`operatingsystemkernelversions_id`,`operatingsystems_id`,`operatingsystemversions_id`,`operatingsystemservicepacks_id`,`operatingsystemeditions_id`,`license_id`,`license_number`,`is_dynamic`,`entities_id`,`is_recursive`,`date_creation`,`date_mod`) VALUES ('Computer','105009','2','1','152','141','4','1','00371-868-0071007-85505','FJ82H--0132345-649879-XQJJ2-GPDD4','1','160','0','2018-09-20 13:29:03','2018-09-20 13:29:03')
  Error: Duplicate entry '105009-Computer-152-2' for key 'unicity'
  Backtrace :
  inc/commondbtm.class.php:504
  inc/commondbtm.class.php:928                       CommonDBTM->addToDB()
  ...nventory/inc/inventorycomputerlib.class.php:187 CommonDBTM->add()
  ...ry/inc/inventorycomputerinventory.class.php:560 PluginFusioninventoryInventoryComputerLib->updateComputer()
  ...inventory/inc/inventoryruleimport.class.php:795 PluginFusioninventoryInventoryComputerInventory->rulepassed()
  inc/rule.class.php:1436                            PluginFusioninventoryInventoryRuleImport->executeActions()
  inc/rulecollection.class.php:1461                  Rule->process()
  ...ry/inc/inventorycomputerinventory.class.php:361 RuleCollection->processAllRules()
  ...ry/inc/inventorycomputerinventory.class.php:126 PluginFusioninventoryInventoryComputerInventory->sendCriteria()
  ...fusioninventory/inc/communication.class.php:235 PluginFusioninventoryInventoryComputerInventory->import()
  ...fusioninventory/inc/communication.class.php:463 PluginFusioninventoryCommunication->import()
  plugins/fusioninventory/front/communication.php:93 PluginFusioninventoryCommunication->handleOCSCommunication()
  plugins/fusioninventory/index.php:59               include_once()

J'ai bein trouvé cette aide sur le forum :   https://forum.glpi-project.org/viewtopic.php?id=160265
Ca m'indique que j'ai pas mal de mes ordinateurs avec un double OS (On parle de 40 000 ).
La volumétrie est importante et supprimer tous les OS ou inventaires de postes me semble un peu extrême.

Avez vous rencontré ce soucis ? Est il lié à une version particulière de GLPI, FusionInventory ou autre ?
Peut on nettoyer de manière douce la base (ne laisser qu'un seul OS par poste...)

Merci de votre aide,

Last edited by fabibus (2018-09-20 14:04:30)


Plateforme en exploitation : GLPI 10.0.3 + GLPiinventory 10.0.3sur Fedora 36
PHP 8.1.11 ,Apache/2.4.54, mysql 8

Offline

#2 2018-09-24 13:46:52

fabibus
Member
From: Nantes
Registered: 2008-02-05
Posts: 171

Re: Soucis suppression systeme exploitation par GLPI et sql_error.log

Bonjour,

Je fais le ménage dans les OS de chaque postes sans les supprimer car j'en ai 80.000 avec des informations financières et des tickets liés.
J'ai trouvé la requête suivante pour supprimé les OS multiples et ne garder que le dernier (id plus grand).

Ma requete mysql wrote:

DELETE t1
FROM glpi_items_operatingsystems AS t1, glpi_items_operatingsystems AS t2
WHERE t1.id < t2.id
AND t1.items_id = t2.items_id

Bref, sur ma maquette cette requête fonctionne. Je la passe en production ?

Je ne sais pas d’où proviennent ces doublons, je vais voir si ils reviennent... Pour info, ma base a été installée en version 0.65. Si quelqu'un a une idée ...


Plateforme en exploitation : GLPI 10.0.3 + GLPiinventory 10.0.3sur Fedora 36
PHP 8.1.11 ,Apache/2.4.54, mysql 8

Offline

#3 2018-09-24 14:19:58

fabibus
Member
From: Nantes
Registered: 2008-02-05
Posts: 171

Re: Soucis suppression systeme exploitation par GLPI et sql_error.log

Si vous voulez la liste de tous vos doublons d'OS :

select items_id from glpi_items_operatingsystems group by items_id having COUNT(*) > 1;


Si vous voulez tester sur un seul identifiant d'ordinateur, vous pouvez passer la requête suivante (en modifiant l'ID 275388 par le votre...:

DELETE t1
FROM glpi_items_operatingsystems AS t1, glpi_items_operatingsystems AS t2
WHERE t1.id < t2.id
AND t1.items_id = t2.items_id
AND t1.items_id = 275388

Bref chez moi plus d'erreurs php et mysql malgré des remontées d'inventaire fusionInventory.


Plateforme en exploitation : GLPI 10.0.3 + GLPiinventory 10.0.3sur Fedora 36
PHP 8.1.11 ,Apache/2.4.54, mysql 8

Offline

#4 2022-07-21 10:28:16

CDuv
Member
Registered: 2007-04-12
Posts: 102

Re: Soucis suppression systeme exploitation par GLPI et sql_error.log

Merci pour la requête.
Sur GLPI 9.3 j'ai remarqué que supprimer les systèmes d'exploitation via l'interface web (Action > Supprimer définitivement la relation avec les éléments sélectionnés) passait bien les lignes de la table `glpi_items_operatingsystems` à `is_deleted=1`.

Donc en soit la suppression (logique) fonctionne, mais l'interface afficher toutes les lignes sans faire de distinction.

Offline

Board footer

Powered by FluxBB