NextDom/nextdom-core

Mise à jour base de données pour migration JeedomV4

Opened this issue · 3 comments

J'ai comparé les bases de données à l'aide des exports des différentes versions. JeedomV3, JeedomV4 et Nextdom. Voici les éléments pour la suite des opérations.

Dans la table cmd :

  • le varchar logicalId passe de 127 à 255
  • le varchar name passe de 45 à 127

Dans la table config :

  • le varchar logicalId passe de 255 à 127

Dans la table eqReal :

  • le varchar logicalId passe de 45 à 127

Dans la table interactDef :

  • nouveau champ display text COLLATE utf8_unicode_ci en fin de liste

Dans la table message :

  • nouveau champ occurrences int(11) DEFAULT NULL en fin de liste

Dans la table object :

  • le varchar name passe de 45 à 127

Dans la table plan3dHeader :

  • nouveau champ order int(11) DEFAULT NULL, en fin de liste + KEY order (order)

Dans la table planHeader :

  • nouveau champ order int(11) DEFAULT NULL, en fin de liste

Dans la table scenario :

  • suppression du champs champ type

Dans la table scenarioSubElement :

  • nouveau champ order int(11) DEFAULT NULL, en fin de liste

Ajout de la table widdgets :

DROP TABLE IF EXISTS `widgets`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `widgets` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
  `type` varchar(27) COLLATE utf8_unicode_ci DEFAULT NULL,
  `subtype` varchar(27) COLLATE utf8_unicode_ci DEFAULT NULL,
  `template` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `display` text COLLATE utf8_unicode_ci,
  `replace` text COLLATE utf8_unicode_ci,
  `test` text COLLATE utf8_unicode_ci,
  PRIMARY KEY (`id`),
  UNIQUE KEY `unique` (`type`,`subtype`,`name`)
) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
/*!40101 SET character_set_client = @

Attention, dans la table cmd il y a un champ en plus dans nextdom : html.

Si on restaure un jeedomV4 sur nextdom0.7 les erreurs concernant la base de donnée sont :

  • Erreur SQL concernant la suppression du champs type dans scenario. Des requêtes utilisent ce champs.
  • Erreur SQL concernant le champs html dans cmd qui n'existe plus dans la base. car la migration à fait un drop+create de la table. mais lors du create le champ html n'existe plus.

Il y en a peut-être d'autres mais déjà si on enlève ces deux là, on y verrait plus claire.

J'ai pu faire des tests : Tout d'abord j'ai ajouté après avoir remonté un jeedomV4 les colonnes :

ALTER TABLE `cmd` add `html` mediumtext COLLATE utf8_unicode_ci;
ALTER TABLE `scenario` add `type` varchar(127) COLLATE utf8_unicode_ci DEFAULT 'expert' AFTER configuration;

Cela marche plutôt bien, mais j'ai l'impression que l'import de toutes la table n'avait pas été faite car il y a des manques (ex j'ai plus les historiques des commandes)

Pour faire une restauration plus propre et espérer avoir l'historique, j'ai modifié le fichier DB_backup.sql avant import pour avoir les deux colonnes manquantes :

CREATE TABLE `cmd` (
[...]
  `html` mediumtext COLLATE utf8_unicode_ci,
[...]
)
INSERT INTO `cmd` (`id`,`eqLogic_id`,`eqType`,`logicalId`,`generic_type`,`order`,`name`,`configuration`,`template`,`isHistorized`,`type`,`subType`,`unite`,`display`,`isVisible`,`value`,`alert`) VALUES(...)
)
CREATE TABLE `scenario` (
[...]
 `type` varchar(127) COLLATE utf8_unicode_ci DEFAULT 'expert',
[...]
)
INSERT INTO `scenario` (`id`,`name`,`group`,`isActive`,`mode`,`schedule`,`scenarioElement`,`trigger`,`timeout`,`isVisible`,`object_id`,`display`,`description`, `configuration`,`order`) VALUES(.......)

Car contre lors de la restaure cela me provoque une erreur >> *** ERROR *** unable to modify content of backup file /tmp/nextdom-restore-2020-03-19-11:48:54/DB_backup.sql Cela doit être normal car le fichier a bien été modifié par moi.

La table eqReal est définitivement supprimé chez jeedom