Dolibarr : Différence entre versions

De Documentation Anelosimus
Aller à : navigation, rechercher
(Page créée avec « L'installation de la version 6.0.3 de Dolibarr échoue sous Debian Stretch avec MariaDB. Possiblement à cause d'une différence entre Mysql et MariaDB en fait. https://ww... »)
 
 
Ligne 1 : Ligne 1 :
 
L'installation de la version 6.0.3 de Dolibarr échoue sous Debian Stretch avec MariaDB.
 
L'installation de la version 6.0.3 de Dolibarr échoue sous Debian Stretch avec MariaDB.
 
Possiblement à cause d'une différence entre Mysql et MariaDB en fait.
 
Possiblement à cause d'une différence entre Mysql et MariaDB en fait.
 +
 
https://www.dolibarr.fr/forum/3-installation/55051-ovh-mutualise-installation-dolibarr-3-8-2
 
https://www.dolibarr.fr/forum/3-installation/55051-ovh-mutualise-installation-dolibarr-3-8-2
  
Les indexes sur certains champs trop longs ne passent pas et renvoies des erreurs du type :  DB_ERROR_1071 Specified key was too long; max key length is 767 bytes
+
Les indexes sur certains champs trop longs ne passent pas et renvoies des erreurs du type :  <blockquote>DB_ERROR_1071 Specified key was too long; max key length is 767 bytes</blockquote>J'ai procédé en changeant le format d'enregistrement des tables InnoDB :
  
J'ai procédé en changeant le format d'enregistrement des tables InnoDB :
 
 
https://dev.mysql.com/doc/refman/5.6/en/innodb-parameters.html#sysvar_innodb_large_prefix
 
https://dev.mysql.com/doc/refman/5.6/en/innodb-parameters.html#sysvar_innodb_large_prefix
 +
 
https://stackoverflow.com/questions/43379717/how-to-enable-large-index-in-mariadb-10
 
https://stackoverflow.com/questions/43379717/how-to-enable-large-index-in-mariadb-10
Donc il faut commencer par appliquer ces commandes globales SQL :
+
 
 +
Donc il faut commencer par appliquer ces commandes globales SQL :<syntaxhighlight lang="sql">
 
SET GLOBAL innodb_file_format=Barracuda;
 
SET GLOBAL innodb_file_format=Barracuda;
 +
 
SET GLOBAL innodb_file_per_table=ON;
 
SET GLOBAL innodb_file_per_table=ON;
 +
 
SET GLOBAL innodb_large_prefix=1;
 
SET GLOBAL innodb_large_prefix=1;
 +
</syntaxhighlight>
  
 
Mais il faut aussi faire un ALTER TABLE %TABLE% ROW_FORMAT=DYNAMIC; sur chaque table.
 
Mais il faut aussi faire un ALTER TABLE %TABLE% ROW_FORMAT=DYNAMIC; sur chaque table.
Après un premier essai d'installation infructueux, les tables sont déjà créées. En se connectant avec la commande mysql à la base, on génère la liste des altérations avec cette commande :
+
 
USE INFORMATION_SCHEMA;
+
Après un premier essai d'installation infructueux, les tables sont déjà créées. En se connectant avec la commande mysql à la base, on génère la liste des altérations avec cette commande :<syntaxhighlight lang="sql">
SELECT  
+
USE INFORMATION_SCHEMA;  
CONCAT("ALTER TABLE `", TABLE_SCHEMA,"`.`", TABLE_NAME, "` ROW_FORMAT=DYNAMIC;")  
+
SELECT CONCAT("ALTER TABLE `", TABLE_SCHEMA,"`.`", TABLE_NAME, "` ROW_FORMAT=DYNAMIC;")  
 
AS MySQLCMD FROM TABLES  
 
AS MySQLCMD FROM TABLES  
 
WHERE TABLE_SCHEMA = "%NOM_DE_LA_BASE";
 
WHERE TABLE_SCHEMA = "%NOM_DE_LA_BASE";
 +
</syntaxhighlight>
  
 
Le format de sortie de mysql trace un rectangle autour des résultats. Je n'ai pas cherché s'il y avait une option, en passant le résultat dans un éditeur de texte j'ai viré par chercher-remplacer les barres droites, et le résultat a très bien fonctionné par un simple copier coller dans l'invite mysql.
 
Le format de sortie de mysql trace un rectangle autour des résultats. Je n'ai pas cherché s'il y avait une option, en passant le résultat dans un éditeur de texte j'ai viré par chercher-remplacer les barres droites, et le résultat a très bien fonctionné par un simple copier coller dans l'invite mysql.
  
 
De retour sur l'installation de dolibarr, les commandes ALTER fonctionnent désormais sans erreur !
 
De retour sur l'installation de dolibarr, les commandes ALTER fonctionnent désormais sans erreur !

Version actuelle datée du 1 novembre 2017 à 23:48

L'installation de la version 6.0.3 de Dolibarr échoue sous Debian Stretch avec MariaDB. Possiblement à cause d'une différence entre Mysql et MariaDB en fait.

https://www.dolibarr.fr/forum/3-installation/55051-ovh-mutualise-installation-dolibarr-3-8-2

Les indexes sur certains champs trop longs ne passent pas et renvoies des erreurs du type :
DB_ERROR_1071 Specified key was too long; max key length is 767 bytes
J'ai procédé en changeant le format d'enregistrement des tables InnoDB :

https://dev.mysql.com/doc/refman/5.6/en/innodb-parameters.html#sysvar_innodb_large_prefix

https://stackoverflow.com/questions/43379717/how-to-enable-large-index-in-mariadb-10

Donc il faut commencer par appliquer ces commandes globales SQL :
SET GLOBAL innodb_file_format=Barracuda;

SET GLOBAL innodb_file_per_table=ON;

SET GLOBAL innodb_large_prefix=1;

Mais il faut aussi faire un ALTER TABLE %TABLE% ROW_FORMAT=DYNAMIC; sur chaque table.

Après un premier essai d'installation infructueux, les tables sont déjà créées. En se connectant avec la commande mysql à la base, on génère la liste des altérations avec cette commande :
USE INFORMATION_SCHEMA; 
SELECT CONCAT("ALTER TABLE `", TABLE_SCHEMA,"`.`", TABLE_NAME, "` ROW_FORMAT=DYNAMIC;") 
AS MySQLCMD FROM TABLES 
WHERE TABLE_SCHEMA = "%NOM_DE_LA_BASE";

Le format de sortie de mysql trace un rectangle autour des résultats. Je n'ai pas cherché s'il y avait une option, en passant le résultat dans un éditeur de texte j'ai viré par chercher-remplacer les barres droites, et le résultat a très bien fonctionné par un simple copier coller dans l'invite mysql.

De retour sur l'installation de dolibarr, les commandes ALTER fonctionnent désormais sans erreur !