带symfony 4的MariaDB 10.0 JSON类型
在我的Linux服务器中,我有MariaDB版本10.0,它不支持json类型(直到版本10.2才支持),我无法更新它,因为它没有在官方ubuntu存储库中发布 当我运行命令带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版)时
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;
}