diff --git a/application/Espo/Core/Utils/Database/DBAL/FieldTypes/JsonArrayType.php b/application/Espo/Core/Utils/Database/DBAL/FieldTypes/JsonArrayType.php index ef95c66742..6e22fd69fc 100644 --- a/application/Espo/Core/Utils/Database/DBAL/FieldTypes/JsonArrayType.php +++ b/application/Espo/Core/Utils/Database/DBAL/FieldTypes/JsonArrayType.php @@ -29,7 +29,7 @@ namespace Espo\Core\Utils\Database\DBAL\FieldTypes; -class JsonArrayType extends \Doctrine\DBAL\Types\JsonArrayType +class JsonArrayType extends \Doctrine\DBAL\Types\TextType { const JSON_ARRAY = 'jsonArray'; diff --git a/application/Espo/Core/Utils/Database/DBAL/FieldTypes/JsonObjectType.php b/application/Espo/Core/Utils/Database/DBAL/FieldTypes/JsonObjectType.php index a5ecc48037..d2eee31b80 100644 --- a/application/Espo/Core/Utils/Database/DBAL/FieldTypes/JsonObjectType.php +++ b/application/Espo/Core/Utils/Database/DBAL/FieldTypes/JsonObjectType.php @@ -29,7 +29,7 @@ namespace Espo\Core\Utils\Database\DBAL\FieldTypes; -class JsonObjectType extends \Doctrine\DBAL\Types\ObjectType +class JsonObjectType extends \Doctrine\DBAL\Types\TextType { const JSON_OBJECT = 'jsonObject'; diff --git a/application/Espo/Core/Utils/Database/DBAL/Platforms/MySqlPlatform.php b/application/Espo/Core/Utils/Database/DBAL/Platforms/MySqlPlatform.php index de81cfc6b9..6c7ae64684 100644 --- a/application/Espo/Core/Utils/Database/DBAL/Platforms/MySqlPlatform.php +++ b/application/Espo/Core/Utils/Database/DBAL/Platforms/MySqlPlatform.php @@ -38,6 +38,10 @@ use Doctrine\DBAL\Schema\Column; class MySqlPlatform extends \Doctrine\DBAL\Platforms\MySqlPlatform { + /* Espo */ + const LENGTH_LIMIT_LONGTEXT = 4294967295; + /* Espo: end */ + public function getAlterTableSQL(TableDiff $diff) { $columnSql = array(); @@ -453,6 +457,29 @@ class MySqlPlatform extends \Doctrine\DBAL\Platforms\MySqlPlatform return 'MEDIUMTEXT'; } + /* Espo: fix a problem of changing text field type */ + public function getClobTypeLength($type) + { + switch ($type) { + case 'tinytext': + return static::LENGTH_LIMIT_TINYTEXT; + break; + + case 'text': + return static::LENGTH_LIMIT_TEXT; + break; + + case 'mediumtext': + return static::LENGTH_LIMIT_MEDIUMTEXT; + break; + + case 'longtext': + return static::LENGTH_LIMIT_LONGTEXT; + break; + } + } + /* Espo: end */ + public function getColumnDeclarationListSQL(array $fields) { $queryFields = array(); diff --git a/application/Espo/Core/Utils/Database/DBAL/Schema/MySqlSchemaManager.php b/application/Espo/Core/Utils/Database/DBAL/Schema/MySqlSchemaManager.php index c50495af53..660502e8a7 100644 --- a/application/Espo/Core/Utils/Database/DBAL/Schema/MySqlSchemaManager.php +++ b/application/Espo/Core/Utils/Database/DBAL/Schema/MySqlSchemaManager.php @@ -203,6 +203,15 @@ class MySqlSchemaManager extends \Doctrine\DBAL\Schema\MySqlSchemaManager case 'year': $length = null; break; + + /* Espo: fix a problem of changing text field type */ + case 'tinytext': + case 'text': + case 'mediumtext': + case 'longtext': + $length = $this->_platform->getClobTypeLength($dbType); + break; + /* Espo: end */ } $length = ((int) $length == 0) ? null : (int) $length;