diff --git a/core/metamodel.class.php b/core/metamodel.class.php
index c1ba6c964..1c6627edb 100644
--- a/core/metamodel.class.php
+++ b/core/metamodel.class.php
@@ -4969,6 +4969,7 @@ abstract class MetaModel
$aCreateTableItems = array(); // array of
=> array of
$aAlterTableMetaData = array();
$aAlterTableItems = array(); // array of =>
+ $aPostTableAlteration = array(); // array of => post alteration queries
foreach(self::GetClasses() as $sClass)
{
@@ -5115,9 +5116,14 @@ abstract class MetaModel
$sColumns .= ' ('.$aLength[0].')';
}
}
-
- $aSugFix[$sClass][$sAttCode][] = "ALTER TABLE `$sTable` ADD $sIndexType `$sIndexName` ($sColumns)";
- if ($bTableToCreate)
+ $sSugFix = "ALTER TABLE `$sTable` ADD $sIndexType `$sIndexName` ($sColumns)";
+ $aSugFix[$sClass][$sAttCode][] = $sSugFix;
+ if ($bFullTextIndexNeeded)
+ {
+ // MySQL does not support multi fulltext index creation in a single query (mysql_errno = 1795)
+ $aPostTableAlteration[$sTable][] = $sSugFix;
+ }
+ elseif ($bTableToCreate)
{
$aCreateTableItems[$sTable][] = "$sIndexType `$sIndexName` ($sColumns)";
}
@@ -5191,7 +5197,15 @@ abstract class MetaModel
if (!empty($sSugFixAfterChange))
{
$aSugFix[$sClass][$sAttCode][] = $sSugFixAfterChange;
- $aAlterTableItems[$sTable][] = $sAlterTableItemsAfterChange;
+ if ($bFullTextIndexNeeded)
+ {
+ // MySQL does not support multi fulltext index creation in a single query (mysql_errno = 1795)
+ $aPostTableAlteration[$sTable][] = $sSugFixAfterChange;
+ }
+ else
+ {
+ $aAlterTableItems[$sTable][] = $sAlterTableItemsAfterChange;
+ }
}
}
}
@@ -5315,6 +5329,10 @@ abstract class MetaModel
$sChangeList = implode(', ', $aChangeList);
$aCondensedQueries[] = "ALTER TABLE `$sTable` $sChangeList";
}
+ foreach($aPostTableAlteration as $sTable => $aChangeList)
+ {
+ $aCondensedQueries = array_merge($aCondensedQueries, $aChangeList);
+ }
return array($aErrors, $aSugFix, $aCondensedQueries);
}