Si vous avez désinstallé Dolibarr ou pas encore installé car vous êtes sur un nouveau serveur, vous devez installer Dolibarr comme si vous vouliez l'utiliser pour la première fois avec des données fraîches.
Attention à utiliser le même type de base de données qu'auparavant (Mysql, PostgreSQL…).
Vous devez installer exactement la même version (vX.Y) que celle qui était utilisée lors de votre sauvegarde.
Si vous voulez pour monter de version, il faut le faire dans un second temps.
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.
mysql base_de_données -h nom_ou_ip_serveur -P 3306 -u utilisateur -pvotremotdepasse < monfichiersauvegarde.sql
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.
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:
-- 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;
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 :
ALTER TABLE `mytable` ADD UNIQUE ( column1(15), column2(200) );
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.