Запрошен неизвестный тип базы данных json, Doctrine \ DBAL \ Platforms \ MySqlPlatform может не поддерживать его - PullRequest
1 голос
/ 23 сентября 2019

Обнаруженная выше ошибка при попытке запустить doctrine:schema:update в Symfony.

Ошибка происходит в AbstractPlatform (часть \ lib \ Doctrine \ Platforms \ AbstractPlatform)

I 'm проверяет, и JSON определенно зарегистрирован в \ lib \ Doctrine \ DBAL \ Types \ Type.php

abstract class Type
{
    const TARRAY = 'array';
    const SIMPLE_ARRAY = 'simple_array';
    const JSON_ARRAY = 'json_array';
    const JSON = 'json';
...
}

Версия MySQL 5.7.26, так что все должно быть в порядке (здесь тип json)

Я просто пытаюсь найти обходной путь.

Я пытался добавить

doctrine:
    dbal:
        types:
            enum: json

в doctrine.yaml

, но это не дало эффекта.Кто-нибудь знает обходной путь?Я понятия не имею, где вызывается файл json ...


Редактировать: я сталкивался с подобной ситуацией здесь, но ответ для Laravel: "Запрошен неизвестный тип базы данных json, Doctrine \ DBAL \ Platforms \ MySQL57Platform может не поддерживать его. "во время выполнения команды php artisan migrate

Кто-нибудь знает, как реализовать это для Symfony?

Ответы [ 2 ]

0 голосов
/ 25 сентября 2019

Для тех, кто заинтересован, вот хакерский обходной путь, с которым я здесь столкнулся https://github.com/doctrine/orm/issues/6540

В AbstractPlatform я просто изменил проверку ошибок для преобразования файлов json в строки.Не идеально, но эта ошибка прошла.

 public function getDoctrineTypeMapping($dbType)
{
    if ($this->doctrineTypeMapping === null) {
        $this->initializeAllDoctrineTypeMappings();
    }

    $dbType = strtolower($dbType);

//inserted hack here

    if($dbType == 'json') {
        $dbType = 'string';
    }
//

    if (!isset($this->doctrineTypeMapping[$dbType])) {
        throw new \Doctrine\DBAL\DBALException("Unknown database type ".$dbType." requested, " . get_class($this) . " may not support it.");
    }

    return $this->doctrineTypeMapping[$dbType];
}
0 голосов
/ 24 сентября 2019

как насчет

 enum: Doctrine\DBAL\Types\JsonType
...