Hallo zusammen,
produktiv setzen wir i-doit Pro ein. Zum testen habe ich mir Docker-Images mit i-doit Open erstellt. Das nur nebenbei.
Aktuell bereite ich den Umzug der i-doit DB auf eine neue MySQL DB vor. Auf dieser neuen MySQL DB setzen wir die neue GTID (General Transaktion ID) Replikation ein (https://dev.mysql.com/doc/refman/5.7/en/replication-gtids.html). Aus diesem Grund ist die Storage Engine MyISAM deaktiviert.
Das hat zur Folge, das CREATE TEMPORARY TABLE Statements fehlschlagen, weil bei diesen explizit ENGINE=MyISAM angegeben ist. Z.B. wenn man sich einen Server in der CMDB anzeigen lässt.
Fehlermeldung:
Database error : Query error: 'CREATE TEMPORARY TABLE tempObjList_05ad75a0e6960bb978e617801ecb5b68 (`isys_catg_access_list__title` TEXT,`isys_access_type__title` TEXT,`isys_catg_access_list__url` TEXT,`isys_catg_access_list__primary` TEXT,`isys_catg_access_list__id` INT(10),`isys_id` TEXT) ENGINE=MyISAM;': Statement violates GTID consistency: CREATE TEMPORARY TABLE and DROP TEMPORARY TABLE can only be executed outside transactional context. These statements are also not allowed in a function or trigger because functions and triggers are also considered to be multi-statement transactions.
Müssen diese Temporary Tables unbedingt auf der Platte gespeichert werden? Können diese nicht mit ENGINE=MEMORY angelegt werden? Falls Temp Tables unbedingt manifestiert werden müssen, kann man die MySQL Storage Engine dafür konfigurieren?
BTW: in MySQL ist internal_tmp_disk_storage_engine per Default auf InnoDB gesetzt.