Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带symfony 4的MariaDB 10.0 JSON类型_Json_Symfony_Doctrine_Mariadb_Symfony4 - Fatal编程技术网

带symfony 4的MariaDB 10.0 JSON类型

带symfony 4的MariaDB 10.0 JSON类型,json,symfony,doctrine,mariadb,symfony4,Json,Symfony,Doctrine,Mariadb,Symfony4,在我的Linux服务器中,我有MariaDB版本10.0,它不支持json类型(直到版本10.2才支持),我无法更新它,因为它没有在官方ubuntu存储库中发布 当我运行命令doctrine:migration:migrate来创建表时,我从MariaDB得到一个json类型的语法错误 MariaDB:10.0.34-PHP:7.1-Symfony:4.0.6 我该如何解决这个问题?问题在于,条令预期MariaDB 10.2+,但将最新的MariaDB版本纳入回购协议(Arch仍在10.1版)时

在我的Linux服务器中,我有MariaDB版本10.0,它不支持json类型(直到版本10.2才支持),我无法更新它,因为它没有在官方ubuntu存储库中发布

当我运行命令
doctrine:migration:migrate
来创建表时,我从MariaDB得到一个json类型的语法错误

MariaDB:10.0.34-PHP:7.1-Symfony:4.0.6


我该如何解决这个问题?

问题在于,条令预期MariaDB 10.2+,但将最新的MariaDB版本纳入回购协议(Arch仍在10.1版)时出现了问题

解决方案如下:

只需在
config/packages/doctrine.yml
中将
server\u version
配置为:

doctrine:
dbal:
    # configure these for your database server
    driver: 'pdo_mysql'
    server_version: 'mariadb-10.1.34'
    ...
只需将该版本替换为您可以使用的版本号即可

$ mysql --version

请注意,不要忘记删除以前使用旧的“服务器版本”生成的迁移


所有内容都包含在“/迁移”中您的项目目录。

此项目在我的本地使用了MariaDB版本10.2.8。只需注意,通过此更改修改原则可能会导致高级内容出现问题,因为它可能希望引擎中出现不存在的内容。@MartinBarker据我所知,此更改正是为了防止出现这种情况。通过告诉条令正确的数据库版本号(错误是由于条令假定您有一个更新的版本),您可以避免条令期望出现的问题。+1因为这个答案深入到了真正的问题。升级数据库版本没问题,但除非相应地更改配置,否则迟早会再次遇到麻烦。
* @ORM\Column(name="roles", type="string")
private $usuarioRoles;

public function getRoles(): array {
        $roles = explode(",",$this->usuarioRoles);
        // guarantee every user at least has ROLE_USER
        $roles[] = 'ROLE_USER';
        return array_unique($roles);
}

public function setRoles(array $roles): self {
        $this->usuarioRol = implode(",",$roles);
        return $this;
}