Documentation du Dr FRAPPE

Ce wiki regroupe les résultats de mes expériences en informatique accumulés au cours de mes recherches sur le net.

Dans la mesure du possible, j'ai cité mes sources ; il en manque certainement… :-)

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
tutoriel:erp-crm:dolibarr:reinstall:ovh:start [2021/10/18 16:30] – [Autres étapes] admintutoriel:erp-crm:dolibarr:reinstall:ovh:start [2022/08/13 22:27] (Version actuelle) – modification externe 127.0.0.1
Ligne 23: Ligne 23:
 Si la sauvegarde a été faite depuis Dolibarr, la version de Dolibarr sauvegardé est incluse dans le nom du fichier de sauvegarde de la base de données. Si la sauvegarde a été faite depuis Dolibarr, la version de Dolibarr sauvegardé est incluse dans le nom du fichier de sauvegarde de la base de données.
 </WRAP> </WRAP>
 +
 ===== Autres étapes ===== ===== Autres étapes =====
  
-  ~~ol:hierarchical~~+<WRAP list-deep>
   - **Restaurer les fichiers documents**   - **Restaurer les fichiers documents**
     - **connectez-vous en administrateur sur votre nouvelle installation de Dolibarr**     - **connectez-vous en administrateur sur votre nouvelle installation de Dolibarr**
Ligne 37: Ligne 38:
     - Sur votre nouvelle installation de Dolibarr, connectez-vous avec un compte administrateur     - Sur votre nouvelle installation de Dolibarr, connectez-vous avec un compte administrateur
     - **Allez dans le menu Accueil > Outils d'administration > Restauration**     - **Allez dans le menu Accueil > Outils d'administration > Restauration**
-    - **Paragraphe 2, méthode d'importation** : MySQL\\ Dolibarr affiche une commande à lancer en ligne de commande avec le mot de passe masqué pour réaliser la restauration de la base de donnée. Cliquez sur "Afficher la commande complète" pour avoir la commande complète avec le mot de passe non masqué. Par exemple, on aura :<cli prompt='$ '>mysql base_de_données -h nom_ou_ip_serveur -P 3306 -u utilisateur -pvotremotdepasse < monfichiersauvegarde.sql</cli>+    - **Paragraphe 2, méthode d'importation** : MySQL\\ Dolibarr affiche une commande à lancer en ligne de commande avec le mot de passe masqué pour réaliser la restauration de la base de donnée.\\ Cliquez sur "Afficher la commande complète" pour avoir la commande complète avec le mot de passe non masqué. Par exemple, on aura :<cli prompt='$ '>mysql base_de_données -h nom_ou_ip_serveur -P 3306 -u utilisateur -pvotremotdepasse < monfichiersauvegarde.sql</cli>
       * **base_de_données** : nom de la base de données MySQL qui contiendra vos données Dolibarr,       * **base_de_données** : nom de la base de données MySQL qui contiendra vos données Dolibarr,
       * **nom_ou_ip_serveur** : nom de la machine sur laquelle sera restaurée la base de données. Cela peut être 'localhost' qui est le nom générique de la machine locale sur laquelle vous opérez. Si la base doit être restaurée sur un autre système que la machine locale, remplacer localhost par le nom ou l'adresse IP du système distant en question.       * **nom_ou_ip_serveur** : nom de la machine sur laquelle sera restaurée la base de données. Cela peut être 'localhost' qui est le nom générique de la machine locale sur laquelle vous opérez. Si la base doit être restaurée sur un autre système que la machine locale, remplacer localhost par le nom ou l'adresse IP du système distant en question.
Ligne 44: Ligne 45:
       * **votremotdepasse** : mot de passe du compte utilisateur MySQL (attention pas d'espaces entre le p et le mot de passe)       * **votremotdepasse** : mot de passe du compte utilisateur MySQL (attention pas d'espaces entre le p et le mot de passe)
       * **monfichiersauvegarde.sql** : nom du fichier dump (ex. mysqldump_dolibarr_2.7.0_200812021800.sql)       * **monfichiersauvegarde.sql** : nom du fichier dump (ex. mysqldump_dolibarr_2.7.0_200812021800.sql)
-    - Dans un terminal, +    - **Dans un terminal**
-      - Allez dans le répertoire où est enregistré le fichier de sauvegarde à restaurer. +      - **Allez dans le répertoire où est enregistré le fichier de sauvegarde** à restaurer. 
-      - Lancez la commande fournie précédemment (n'oubliez aucun espace, signe "-" ou "<"+      - **Lancez la commande fournie précédemment** (n'oubliez aucun espace, signe "-" ou "<"
-    - vous pouvez également utiliser phpMyAdmin, onglet Importer, pour restaurer votre fichier de sauvegarde (normalement, vous n'aurez à cocher aucune option en particulier, mais votre fichier de sauvegarde doit absolument désactiver FOREIGN_KEY_CHECKS, voir ci-dessous). Cette méthode offre des résultats qui ne sont toutefois pas garantie contrairement à la méthode précédente.+    - **Vous pouvez également utiliser Adminer** : 
 +      - **cliquez sur le lien __Importer__** 
 +      - **cliquez sur <key>Parcourir</key>** pour sélectionner votre fichier de sauvegarde (normalement, vous n'aurez à cocher aucune option en particulier, mais votre fichier de sauvegarde doit absolument désactiver FOREIGN_KEY_CHECKS, voir [[#Problèmes connus]]) 
 +      - **Cliquez sur <key>Exécuter</key>** 
 +      - Les résultats de cette méthode ne sont pas garantis contrairement à la méthode précédente. 
 +</WRAP> 
 ===== Conclusion ===== ===== Conclusion =====
  
 ===== Problèmes connus ===== ===== Problèmes connus =====
 +
 +??? ERROR 1005 (HY000) at line 20: Can't create table `dolibarr`.`llx_accounting_account` (errno: 150 "Foreign key constraint is incorrectly formed")
 +!!! Si vous avez cette erreur, vous devez manuellement détruire la table llx_accounting_account et llx_accounting_system, avant de recommencer la tentative de chargement.
 +??? Erreur au chargement de table sur des foreign keys.
 +!!! Votre dump sql doit désactiver les vérifications de Foreign Keys pendant la restauration, sinon votre backup SQL ne pourra pas être restauré à cause des clashs entre les Foreign Keys! Ceci devrait être le cas par défaut si vous avez effectué votre sauvegarde correctement.
 +
 +Exemple: Ajouter FOREIGN_KEY_CHECKS au tout début et à la fin du fichier sql:
 +<code SQL mysqldump_....sql>
 +-- SQL Dump
 +-- Server version: 5.5.8
 +
 +SET FOREIGN_KEY_CHECKS=0;
 +SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
 +
 +
 +/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
 +/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
 +/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
 +/*!40101 SET NAMES utf8 */;
 +
 +CREATE TABLE IF NOT EXISTS `llx_accountingaccount` (
 +
 +INSERT INTO ...
 +
 +CREATE TABLE ...
 +
 +INSERT INTO ...
 +
 +...
 +
 +SET FOREIGN_KEY_CHECKS=1;</code>
 +
 +??? Erreur dans la requête (1071): Specified key was too long; max key length is 767 bytes
 +!!! 767 octets est la limite de préfixe indiquée pour les tables InnoDB dans MySQL version 5.6 (et versions antérieures). Elle fait 1 000 octets pour les tables MyISAM. Dans MySQL version 5.7 et supérieures, cette limite a été augmentée à 3072 octets.
 +
 +Sachez aussi que si vous définissez un index sur un grand champ char ou varchar encodé en utf8mb4, vous devez diviser par 4 la longueur maximale du préfixe d'index de 767 octets (ou 3072 octets), ce qui donne 191. En effet, la longueur maximale d'un caractère utf8mb4 est de quatre octets. Pour un caractère utf8, elle serait de trois octets, ce qui donnerait une longueur maximale de préfixe d'index de 254.
 +
 +!!! Une solution est de placer une limite inférieure sur vos champs VARCHAR.
 +!!! Une autre option (selon la réponse à ce problème) consiste à utiliser un sous-ensemble de la colonne plutôt que le montant total, c'est-à-dire :<code sql >ALTER TABLE `mytable` ADD UNIQUE ( column1(15), column2(200) );</code>
 +
 +Ajustez au fur et à mesure que vous devez obtenir la clé à appliquer, mais je me demande s'il vaudrait la peine de revoir votre modèle de données concernant cette entité pour voir s'il y a des améliorations qui vous permettraient d'implémenter les règles métier prévues sans atteindre la limitation MySQL.
  
 ===== Voir aussi ===== ===== Voir aussi =====