Update auf OPSI-Server schlug fehl (Datenbank-probleme)

sschu
Beiträge: 18
Registriert: 16 Aug 2011, 18:16

Update auf OPSI-Server schlug fehl (Datenbank-probleme)

Beitrag von sschu »

Hallo,

eigentlich nutze ich meines Wissens immer noch das File-Backend für so ziemlich alles Mögliche (Software-Audits etc), aber beim letzten Update kam plötzlich folgende Fehlermeldung:

Code: Alles auswählen

opsi-depotserver (4.0.6.7-2) wird eingerichtet ...
[5] [Oct 19 19:04:17] Modules file signature verified (customer: opsi community) (MySQL.py|523)
[5] [Oct 19 19:04:18] Creating base path: '/var/lib/opsi/config' (File.py|233)
[5] [Oct 19 19:04:19] Creating opsi base (SQL.py|462)
[2] [Oct 19 19:04:19] Traceback: (Logger.py|753)
[2] [Oct 19 19:04:19]   File "/usr/bin/opsi-setup", line 2182, in <module>
    main()
 (Logger.py|753)
[2] [Oct 19 19:04:19]   File "/usr/bin/opsi-setup", line 2130, in main
    initializeBackends()
 (Logger.py|753)
[2] [Oct 19 19:04:19]   File "/usr/bin/opsi-setup", line 1794, in initializeBackends
    backend.backend_createBase()
 (Logger.py|753)
[2] [Oct 19 19:04:19]   File "<string>", line 1, in backend_createBase
 (Logger.py|753)
[2] [Oct 19 19:04:19]   File "/usr/lib/python2.7/dist-packages/OPSI/Backend/Backend.py", line 488, in _executeMethod
    return meth(**kwargs)
 (Logger.py|753)
[2] [Oct 19 19:04:19]   File "<string>", line 1, in backend_createBase
 (Logger.py|753)
[2] [Oct 19 19:04:19]   File "/usr/lib/python2.7/dist-packages/OPSI/Backend/Backend.py", line 488, in _executeMethod
    return meth(**kwargs)
 (Logger.py|753)
[2] [Oct 19 19:04:19]   File "<string>", line 1, in backend_createBase
 (Logger.py|753)
[2] [Oct 19 19:04:19]   File "/usr/lib/python2.7/dist-packages/OPSI/Backend/Backend.py", line 488, in _executeMethod
    return meth(**kwargs)
 (Logger.py|753)
[2] [Oct 19 19:04:19]   File "<string>", line 1, in backend_createBase
 (Logger.py|753)
[2] [Oct 19 19:04:19]   File "/usr/lib/python2.7/dist-packages/OPSI/Backend/BackendManager.py", line 488, in _dispatchMethod
    res = meth(**kwargs)
 (Logger.py|753)
[2] [Oct 19 19:04:19]   File "/usr/lib/python2.7/dist-packages/OPSI/Backend/SQL.py", line 994, in backend_createBase
    self._sql.execute(hardwareConfigTable)
 (Logger.py|753)
[2] [Oct 19 19:04:19]   File "/usr/lib/python2.7/dist-packages/OPSI/Backend/MySQL.py", line 445, in execute
    res = cursor.execute(query)
 (Logger.py|753)
[2] [Oct 19 19:04:19]   File "/usr/lib/python2.7/dist-packages/MySQLdb/cursors.py", line 226, in execute
    self.errorhandler(self, exc, value)
 (Logger.py|753)
[2] [Oct 19 19:04:19]   File "/usr/lib/python2.7/dist-packages/MySQLdb/connections.py", line 36, in defaulterrorhandler
    raise errorvalue
 (Logger.py|753)
[2] [Oct 19 19:04:19]      ==>>> (1067, "Invalid default value for 'firstseen'") (opsi-setup|2186)

ein manuelles korrigieren der Datenbank Tabelle software_config:

Code: Alles auswählen

+-----------------+---------------+------+-----+---------------------+----------------+
| Field           | Type          | Null | Key | Default             | Extra          |
+-----------------+---------------+------+-----+---------------------+----------------+
| config_id       | int(11)       | NO   | PRI | NULL                | auto_increment |
| clientId        | varchar(255)  | NO   |     | NULL                |                |
| name            | varchar(100)  | NO   |     | NULL                |                |
| version         | varchar(100)  | NO   |     | NULL                |                |
| subVersion      | varchar(100)  | NO   |     | NULL                |                |
| language        | varchar(10)   | NO   |     | NULL                |                |
| architecture    | varchar(3)    | NO   |     | NULL                |                |
| uninstallString | varchar(200)  | YES  |     | NULL                |                |
| binaryName      | varchar(100)  | YES  |     | NULL                |                |
| firstseen       | timestamp     | NO   |     | 0000-00-00 00:00:00 |                |
| lastseen        | timestamp     | NO   |     | 0000-00-00 00:00:00 |                |
| state           | tinyint(4)    | NO   |     | NULL                |                |
| usageFrequency  | int(11)       | NO  |     | -1                  |                |
| lastUsed        | timestamp     | NO   |     | 0000-00-00 00:00:00 |                |
| licenseKey      | varchar(1024) | YES  |     | NULL                |                |
+-----------------+---------------+------+-----+---------------------+----------------+
Scheitert leider daran, dass ich sobald ich folgenden befehl im mysql-Client absetze:

Code: Alles auswählen

alter table SOFTWARE_CONFIG alter lastseen set  DEFAULT '1970-01-01 00:00:01', alter firstseen set DEFAULT '1970-01-01 00:00:01', alter lastused set default '1970-01-01 00:00:01';
ERROR 1067 (42000): Invalid default value for 'firstseen'
Den Fehler erhalte, das die angegebenen Defaults keine gültigen Werte für TIMESTAMP-Spalten seien. Wenn ich dann ein " UTC" ergänze bekomme ich aber die Fehlermeldung, dass usageFrequency einen ungültigen Default von -1 hat (was ja totaler Blödsinn ist, da -1 im Range von INT liegt).
Daher hab ich dann mal usageFrequency so verändert, dass NULL als Default gesetzt wird, aber das macht es leider nicht besser.

Bei der Fehlersuche war ich auf den Hinweis bzgl. des safe_mode von mysql gestoßen, der TIMESTAMPS mit "0000-00-00 00:00" als Default verbietet:

Code: Alles auswählen

mysql> SHOW VARIABLES LIKE 'sql_mode'
    -> ;
+---------------+-------------------------------------------------------------------------------------------------------------------------------------------+
| Variable_name | Value                                                                                                                                     |
+---------------+-------------------------------------------------------------------------------------------------------------------------------------------+
| sql_mode      | ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION |
+---------------+-------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0,00 sec)
Erst dachte ich mir: Na gut, nutzt ja eh das Filebackend - aber Pustekuchen, Hardware-Inventarisierung und Software-Inventarisierung nutzen scheinbar beide inzwischen SQL als Backend - wobei Software-Inventarisierung mich noch nichtmal stören würde, aber auf die Hardware-Inventarisierung bin ich im Rahmen der netboot-Produkte angewiesen :(

Installiert sind u.a. die folgenden Pakete:
  • * opsi-atftpd_0.7.dfsg-6_i386.deb
    * opsiconfd_4.0.7.4-1_all.deb
    * opsi-configed_4.0.7.1.3-1_all.deb
    * opsi-depotserver_4.0.6.7-2_all.deb
    * opsi-linux-bootimage_20160706-1_i386.deb
    * opsi-linux-bootimage_20160825-1_i386.deb
    * opsipxeconfd_4.0.7.1-1_all.deb
    * opsi-utils_4.0.7.5-1_all.deb
    * mysql-client-5.7_5.7.15-0ubuntu0.16.04.1_i386.deb
    * mysql-client-core-5.7_5.7.15-0ubuntu0.16.04.1_i386.deb
    * mysql-common_5.7.15-0ubuntu0.16.04.1_all.deb
    * mysql-server_5.7.15-0ubuntu0.16.04.1_all.deb
    * mysql-server-5.7_5.7.15-0ubuntu0.16.04.1_i386.deb
    * mysql-server-core-5.7_5.7.15-0ubuntu0.16.04.1_i386.deb
aus den folgenden Paketquellen:

Code: Alles auswählen

deb http://archive.canonical.com/ubuntu xenial partner
deb-src http://archive.canonical.com/ubuntu xenial partner

deb http://archive.ubuntu.com/ubuntu xenial main restricted
deb-src http://archive.ubuntu.com/ubuntu xenial main restricted
deb http://archive.ubuntu.com/ubuntu xenial universe
deb-src http://archive.ubuntu.com/ubuntu xenial universe
deb http://archive.ubuntu.com/ubuntu xenial multiverse
deb-src http://archive.ubuntu.com/ubuntu xenial multiverse

deb http://security.ubuntu.com/ubuntu xenial-security main restricted
deb-src http://security.ubuntu.com/ubuntu xenial-security main restricted
deb http://security.ubuntu.com/ubuntu xenial-security universe
deb-src http://security.ubuntu.com/ubuntu xenial-security universe
deb http://security.ubuntu.com/ubuntu xenial-security multiverse
deb-src http://security.ubuntu.com/ubuntu xenial-security multiverse
deb http://download.opensuse.org/repositories/home:/uibmz:/opsi:/opsi40/xUbuntu_14.04 ./ 
Benutzeravatar
n.wenselowski
Ex-uib-Team
Beiträge: 3194
Registriert: 04 Apr 2013, 12:15

Re: Update auf OPSI-Server schlug fehl (Datenbank-probleme)

Beitrag von n.wenselowski »

Hi,

das Problem sieht für mich ganz stark nach MySQL strict mode aus.
Wie man den MySQL-Server passend konfiguriert steht in Releasenotes 4.0.7 und dem Getting Started.

Treten nach passender Konfiguration noch immer Fehler auf?


Gruß

Niko

Code: Alles auswählen

import OPSI
Tresor
Beiträge: 1
Registriert: 13 Dez 2016, 15:55
Kontaktdaten:

Re: Update auf OPSI-Server schlug fehl (Datenbank-probleme)

Beitrag von Tresor »

Ich habe dieses Problem. Es ist ein guter Rat für mich :) Vielen Dank.
San-Frank
Beiträge: 2
Registriert: 26 Mai 2011, 08:17

Re: Update auf OPSI-Server schlug fehl (Datenbank-probleme)

Beitrag von San-Frank »

Wir habe das gleiche Problem.
Leider zieht der Lösungsansatz mit der Konfiguration laut Releasenote nicht.
San-Frank
Beiträge: 2
Registriert: 26 Mai 2011, 08:17

Re: Update auf OPSI-Server schlug fehl (Datenbank-probleme)

Beitrag von San-Frank »

Wir sind ein Schritt weiter.
wie es scheint gibt es jetzt noch ein Problem mit den "foreign key" in einer Tabelle.

Code: Alles auswählen

opsi-setup --update-mysql
[5] [Dec 21 11:32:19] Connection to database 'opsi' on 'localhost' as user 'opsi' (MySQL.py|48)
[5] [Dec 21 11:32:21] Updating database table HARDWARE_DEVICE_HDAUDIO_DEVICE (MySQL.py|170)
[5] [Dec 21 11:32:21] Updating database table HARDWARE_DEVICE_SCSI_CONTROLLER (MySQL.py|170)
[5] [Dec 21 11:32:21] Updating database table HARDWARE_DEVICE_AUDIO_CONTROLLER (MySQL.py|170)
[5] [Dec 21 11:32:21] Updating database table HARDWARE_DEVICE_VIDEO_CONTROLLER (MySQL.py|170)
[5] [Dec 21 11:32:21] Updating database table HARDWARE_DEVICE_PCI_DEVICE (MySQL.py|170)
[5] [Dec 21 11:32:21] Updating database table HARDWARE_DEVICE_NETWORK_CONTROLLER (MySQL.py|170)
[5] [Dec 21 11:32:21] Updating database table HARDWARE_DEVICE_IDE_CONTROLLER (MySQL.py|170)
[5] [Dec 21 11:32:21] Updating database table HARDWARE_DEVICE_USB_DEVICE (MySQL.py|170)
[5] [Dec 21 11:32:21] Updating database table HARDWARE_DEVICE_PCMCIA_CONTROLLER (MySQL.py|170)
[5] [Dec 21 11:32:21] Updating database table HARDWARE_DEVICE_FLOPPY_CONTROLLER (MySQL.py|170)
[5] [Dec 21 11:32:21] Updating database table HARDWARE_DEVICE_USB_CONTROLLER (MySQL.py|170)
[5] [Dec 21 11:32:21] Updating database table HARDWARE_DEVICE_1394_CONTROLLER (MySQL.py|170)
[5] [Dec 21 11:32:21] Updating productId Columns (MySQL.py|448)
[2] [Dec 21 11:32:21] Traceback: (Logger.py|753)
[2] [Dec 21 11:32:21]   File "/usr/bin/opsi-setup", line 2182, in <module>
    main()
 (Logger.py|753)
[2] [Dec 21 11:32:21]   File "/usr/bin/opsi-setup", line 2137, in main
    updateMySQLBackend(additionalBackendConfiguration=backendConfig)
 (Logger.py|753)
[2] [Dec 21 11:32:21]   File "/usr/lib/python2.7/dist-packages/OPSI/Util/Task/UpdateBackend/MySQL.py", line 457, in updateMySQLBackend
    mysql.execute(u"alter table %s MODIFY COLUMN `%s` VARCHAR(255);" % (tableName, fieldName))
 (Logger.py|753)
[2] [Dec 21 11:32:21]   File "/usr/lib/python2.7/dist-packages/OPSI/Backend/MySQL.py", line 445, in execute
    res = cursor.execute(query)
 (Logger.py|753)
[2] [Dec 21 11:32:21]   File "/usr/lib/python2.7/dist-packages/MySQLdb/cursors.py", line 226, in execute
    self.errorhandler(self, exc, value)
 (Logger.py|753)
[2] [Dec 21 11:32:21]   File "/usr/lib/python2.7/dist-packages/MySQLdb/connections.py", line 36, in defaulterrorhandler
    raise errorvalue
 (Logger.py|753)
[2] [Dec 21 11:32:21]      ==>>> (1833, "Cannot change column 'productId': used in a foreign key constraint 'PRODUCT_DEPENDENCY_ibfk_1' of table 'opsi.PRODUCT_DEPENDENCY'") (opsi-setup|2186)

ERROR: (1833, "Cannot change column 'productId': used in a foreign key constraint 'PRODUCT_DEPENDENCY_ibfk_1' of table 'opsi.PRODUCT_DEPENDENCY'")
Benutzeravatar
m.radtke
uib-Team
Beiträge: 1625
Registriert: 10 Jun 2015, 12:19

Re: Update auf OPSI-Server schlug fehl (Datenbank-probleme)

Beitrag von m.radtke »

Was mir aufgefallen ist:
Ihr habt auf xenial upgedatet, habt aber immer noch das 14.04 opsi Repo eingebunden. Hier müsste das 16.04 Repo drin stehen. Dies passiert nicht automatisch. Dadurch habt ihr aktuell inkompatible Pakete.
Vielleicht hilft es die Pakete auf 16.04 zu bringen und nochmal die MySQL Datenbank per opsi Setup zu konfigurieren.

Ich versuche in der kommenden Woche eine 14.04 opsi Maschine nach 16.04 upzudaten und den Fehler zu reproduzieren. Versprechen kann ich a er nichts.

Gruß
Mathias
Kein Support per DM!
_________________________
opsi support - http://www.uib.de/
For productive opsi installations we recommend support contracts.
Benutzeravatar
n.wenselowski
Ex-uib-Team
Beiträge: 3194
Registriert: 04 Apr 2013, 12:15

Re: Update auf OPSI-Server schlug fehl (Datenbank-probleme)

Beitrag von n.wenselowski »

Hi,
San-Frank hat geschrieben:Wir sind ein Schritt weiter.
wie es scheint gibt es jetzt noch ein Problem mit den "foreign key" in einer Tabelle.

Code: Alles auswählen

opsi-setup --update-mysql
[5] [Dec 21 11:32:19] Connection to database 'opsi' on 'localhost' as user 'opsi' (MySQL.py|48)
[5] [Dec 21 11:32:21] Updating database table HARDWARE_DEVICE_HDAUDIO_DEVICE (MySQL.py|170)
[5] [Dec 21 11:32:21] Updating database table HARDWARE_DEVICE_SCSI_CONTROLLER (MySQL.py|170)
[5] [Dec 21 11:32:21] Updating database table HARDWARE_DEVICE_AUDIO_CONTROLLER (MySQL.py|170)
[5] [Dec 21 11:32:21] Updating database table HARDWARE_DEVICE_VIDEO_CONTROLLER (MySQL.py|170)
[5] [Dec 21 11:32:21] Updating database table HARDWARE_DEVICE_PCI_DEVICE (MySQL.py|170)
[5] [Dec 21 11:32:21] Updating database table HARDWARE_DEVICE_NETWORK_CONTROLLER (MySQL.py|170)
[5] [Dec 21 11:32:21] Updating database table HARDWARE_DEVICE_IDE_CONTROLLER (MySQL.py|170)
[5] [Dec 21 11:32:21] Updating database table HARDWARE_DEVICE_USB_DEVICE (MySQL.py|170)
[5] [Dec 21 11:32:21] Updating database table HARDWARE_DEVICE_PCMCIA_CONTROLLER (MySQL.py|170)
[5] [Dec 21 11:32:21] Updating database table HARDWARE_DEVICE_FLOPPY_CONTROLLER (MySQL.py|170)
[5] [Dec 21 11:32:21] Updating database table HARDWARE_DEVICE_USB_CONTROLLER (MySQL.py|170)
[5] [Dec 21 11:32:21] Updating database table HARDWARE_DEVICE_1394_CONTROLLER (MySQL.py|170)
[5] [Dec 21 11:32:21] Updating productId Columns (MySQL.py|448)
[2] [Dec 21 11:32:21] Traceback: (Logger.py|753)
[2] [Dec 21 11:32:21]   File "/usr/bin/opsi-setup", line 2182, in <module>
    main()
 (Logger.py|753)
[2] [Dec 21 11:32:21]   File "/usr/bin/opsi-setup", line 2137, in main
    updateMySQLBackend(additionalBackendConfiguration=backendConfig)
 (Logger.py|753)
[2] [Dec 21 11:32:21]   File "/usr/lib/python2.7/dist-packages/OPSI/Util/Task/UpdateBackend/MySQL.py", line 457, in updateMySQLBackend
    mysql.execute(u"alter table %s MODIFY COLUMN `%s` VARCHAR(255);" % (tableName, fieldName))
 (Logger.py|753)
[2] [Dec 21 11:32:21]   File "/usr/lib/python2.7/dist-packages/OPSI/Backend/MySQL.py", line 445, in execute
    res = cursor.execute(query)
 (Logger.py|753)
[2] [Dec 21 11:32:21]   File "/usr/lib/python2.7/dist-packages/MySQLdb/cursors.py", line 226, in execute
    self.errorhandler(self, exc, value)
 (Logger.py|753)
[2] [Dec 21 11:32:21]   File "/usr/lib/python2.7/dist-packages/MySQLdb/connections.py", line 36, in defaulterrorhandler
    raise errorvalue
 (Logger.py|753)
[2] [Dec 21 11:32:21]      ==>>> (1833, "Cannot change column 'productId': used in a foreign key constraint 'PRODUCT_DEPENDENCY_ibfk_1' of table 'opsi.PRODUCT_DEPENDENCY'") (opsi-setup|2186)

ERROR: (1833, "Cannot change column 'productId': used in a foreign key constraint 'PRODUCT_DEPENDENCY_ibfk_1' of table 'opsi.PRODUCT_DEPENDENCY'")
Bitte installiere python-opsi 4.0.7.31-1 aus experimental und versuche damit nochmal dein Glück.


Viele Grüße

Niko

Code: Alles auswählen

import OPSI
wakefred
Beiträge: 1
Registriert: 24 Nov 2015, 09:58

Re: Update auf OPSI-Server schlug fehl (Datenbank-probleme)

Beitrag von wakefred »

Was ist der Status hierzu? Bringt die installation von python-opsi 4.0.7.31-1 aus experimental etwas?
Ich möchte drum auch langsam von Xubuntu 14.04 LTS auf 16.04 LTS umsteigen.
Benutzeravatar
n.wenselowski
Ex-uib-Team
Beiträge: 3194
Registriert: 04 Apr 2013, 12:15

Re: Update auf OPSI-Server schlug fehl (Datenbank-probleme)

Beitrag von n.wenselowski »

Hi,
wakefred hat geschrieben:Was ist der Status hierzu? Bringt die installation von python-opsi 4.0.7.31-1 aus experimental etwas?
Ich möchte drum auch langsam von Xubuntu 14.04 LTS auf 16.04 LTS umsteigen.
Das Problem kommt durch die geänderten Defaults für MySQL unter 16.04. Du kannst bereits unter 14.04 ein opsi-setup --update-mysql ausführen und die DB soweit anpassen lassen. Wenn du schon python-opsi 4.0.7 auf deinem Ubuntu 14.04 hast, dann erwarte ich keine Probleme mehr unter 16.04, weil die zu machenden Änderungen darin schon enthalten sind und somit unter 16.04 keine Änderungen mehr gemacht werden müssen.


Viele Grüße

Niko

Code: Alles auswählen

import OPSI
M.Reinhard
Beiträge: 6
Registriert: 29 Jul 2011, 08:00
Wohnort: Krefeld
Kontaktdaten:

Re: Update auf OPSI-Server schlug fehl (Datenbank-probleme)

Beitrag von M.Reinhard »

Guten Morgen zusammen,

ich habe das gleiche Problem, hat schon jemand das python Paket installiert und getestet oder eine alternative Lösung gefunden?
Mit freundlichen Grüßen
Im Auftrag

Martin Reinhard

----------------------------------------------------
Verwaltungssteuerung und -service
47792 Krefeld
Internet: http://www.krefeld.de
Antworten