pluginsGLPI / ocsinventoryng

Plugin ocsinventoryng for GLPI
GNU General Public License v2.0
68 stars 52 forks source link

Erreur d'importation des logiciels #303

Open belu33fr opened 2 years ago

belu33fr commented 2 years ago

Bonjour à l'équipe, GLPI : 9.4.5 Plugin: 1.6.1 (mais vrai aussi dans 1.7 - analyse de code) Version OCS: 2.9.1

Après migration d'OCS vers 2.9.1, l'importation et la mise à jour dans GLPI ne se fait plus.

Quand on met le debug actif, alors une erreur php se produit: Fatal error: Uncaught Error: Call to a member function fetch_assoc() on boolean in /opt/glpi/inc/dbmysql.class.php:329 Stack trace: #0 /opt/glpi/plugins/ocsinventoryng/inc/ocsdbclient.class.php(341): DBmysql->fetch_assoc(false) #1 /opt/glpi/plugins/ocsinventoryng/inc/ocsdbclient.class.php(1008): PluginOcsinventoryngOcsDbClient->getComputerSections(Array, 524159, 1, 31, 0) #2 /opt/glpi/plugins/ocsinventoryng/inc/ocsclient.class.php(374): PluginOcsinventoryngOcsDbClient->getComputers(Array, '59') #3 /opt/glpi/plugins/ocsinventoryng/inc/ocsprocess.class.php(1159): PluginOcsinventoryngOcsClient->getComputer('59', Array) #4 /opt/glpi/plugins/ocsinventoryng/front/ocsng.sync.php(52): PluginOcsinventoryngOcsProcess::synchronizeComputer(Array) #5 {main} thrown in /opt/glpi/inc/dbmysql.class.php on line 329

Quand on regarde dans les logs, on a l'erreur: [2022-01-18 23:27:36] glpisqllog.ERROR: DBmysql::query() in /opt/glpi/inc/dbmysql.class.php line 187 *** MySQL query error: SQL: SELECT softwares.NAME, softwares.VERSION, softwares.PUBLISHER, softwares.COMMENTS, softwares.FOLDER, softwares.FILENAME, softwares.FILESIZE, softwares.SOURCE, softwares.HARDWARE_ID,softwares.GUID, softwares.LANGUAGE, softwares.INSTALLDATE, softwares.BITSWIDTHFROM softwares WHERE softwares.HARDWARE_ID IN (363)ORDER BY id DESC Error: Table 'ocsweb.softwares' doesn't exist Backtrace : ...ns/ocsinventoryng/inc/ocsdbclient.class.php:340 ...s/ocsinventoryng/inc/ocsdbclient.class.php:1008 PluginOcsinventoryngOcsDbClient->getComputerSections() plugins/ocsinventoryng/inc/ocsclient.class.php:374 PluginOcsinventoryngOcsDbClient->getComputers() ...ns/ocsinventoryng/inc/ocsprocess.class.php:1159 PluginOcsinventoryngOcsClient->getComputer() plugins/ocsinventoryng/front/ocsng.sync.php:52 PluginOcsinventoryngOcsProcess::synchronizeComputer() {"user":"2@alkazar"}

Après recherche au niveau OCS, il s'avère que les tables autour des logiciels ont complétement changé, à commencer par le nom qui n'est plus au pluriel et il y a une scission de la table logiciel en plusieurs.

J'ai vérifier que le problème était similaire (analyse du code de ocsdbclient.

Je vous souhaite une bonne correction, car je sais qu'il faudra concerver la compatibilité en fonction de la version d'OCS.

Bravo pour votre travail

belu33fr commented 2 years ago

Petit complément. Les solutions mises en places par les précédents patch ne marchent pas. Ils provoquent d'autres erreurs avec la version d'OCS