Search code examples
magento2

Tinytext issue on Upgrade magento to 2.3.0


In Magento my website 's current version is magento 2.2.5 . Now i have updated it to latest version magento 2.3.0 . But there i am getting error when i run

php bin/magento setup:upgrade

I got this error

Cannot process definition to array for type tinytext

Please suggest me solution. Thank You


Solution

  • You are getting this error because "data type" of any third party extension's table's column is tinytext.

    So you need to find out column name using debug in following file.

    Open this file /vendor/magento/framework/Setup/Declaration/Schema/Db/DefinitionAggregator.php and check this fromDefinition() method and then add debug code to find column name.

    public function fromDefinition(array $data)
        {
            $type = $data['type'];
            if (!isset($this->definitionProcessors[$type])) {
    
                /* Add Code for Debug */
    
                echo "<pre>";
                print_r($data); exit();
    
                /* Code End */
    
                throw new \InvalidArgumentException(
                    sprintf("Cannot process definition to array for type %s", $type)
                );
            }
    
            $definitionProcessor = $this->definitionProcessors[$type];
            return $definitionProcessor->fromDefinition($data);
        }
    

    After that please run setup:upgrade command and you will get array of column data in console. so from this array you will get name of column from your third party extension table.

    Now from that table please change column's data type "tinytext" to "text" and issue will be fixed.

    Note : You might also get issues from ENUM and MEDIUMINT data type as well, so do the same steps if get any other data type issue.