MariaDB的10.0 JSON型用symfony 4(MariaDB 10.0 JSON typ

2019-09-27 14:08发布

在我的Linux服务器,我有MariaDB的10.0版本不支持JSON类型(支持到10.2版本),因为它不是在Ubuntu官方公布的资料库我不能更新。

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

MariaDB的:10.0.34 - PHP:7.1 - Symfony的:4.0.6

我该如何解决这个问题?

Answer 1:

你应该更新它,请停止使用MariaDB的默认发行回购协议。 由于他们,有自己的是保持更新, https://downloads.mariadb.org/mariadb/repositories/#mirror=exascale&distro=Ubuntu

这将不同于有指导是唯一的事情,

sudo apt update
sudo apt install mariadb-server

会变成

sudo apt update
sudo apt upgrade mariadb-server

一旦你做,你应该是好去。

从该链接的信息复制

sudo apt-get install software-properties-common
sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8
sudo add-apt-repository 'deb [arch=amd64,i386] http://mirror.sax.uk.as61049.net/mariadb/repo/10.2/ubuntu artful main'

sudo apt update
sudo apt install mariadb-server


Answer 2:

问题是,学说期待MariaDB的10.2+,但也出现了获取最新版本MariaDB的回购成(ARCH仍处于10.1)的问题。

该解决方案是在这里: https://symfony.com/doc/current/reference/configuration/doctrine.html#doctrine-dbal-configuration

只需配置server_versionconfig/packages/doctrine.yml到:

doctrine:
dbal:
    # configure these for your database server
    driver: 'pdo_mysql'
    server_version: 'mariadb-10.1.34'
    ...

只需更换您的版本号的版本,你可以用得到

$ mysql --version


Answer 3:

* @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;
}


文章来源: MariaDB 10.0 JSON type with symfony 4