Symfony 对于可为空的列,数据库架构不同步

Symfony 对于可为空的列,数据库架构不同步,symfony,doctrine-orm,mariadb,Symfony,Doctrine Orm,Mariadb,刚刚发现条令:schema:validate引发了一个错误: [错误]数据库架构与当前映射文件不同步 所以我尝试了原则:schema:update--force--complete--dump sql,这是成功的: 将执行以下SQL语句: ALTER TABLE user CHANGE last_login `last_login` DATETIME DEFAULT NULL; 正在更新数据库架构 1 query was executed [确定]数据库架构已成功更新 但如果我再次运行原

刚刚发现
条令:schema:validate
引发了一个错误:

[错误]数据库架构与当前映射文件不同步

所以我尝试了
原则:schema:update--force--complete--dump sql
,这是成功的:

将执行以下SQL语句:

 ALTER TABLE user CHANGE last_login `last_login` DATETIME DEFAULT NULL;
正在更新数据库架构

 1 query was executed
[确定]数据库架构已成功更新

但如果我再次运行
原则:schema:validate
,它会抛出与schema不同步有关的相同错误

我已经检查了数据库表字段定义,它看起来不错:

`last_login` datetime DEFAULT NULL
这就是列的定义方式:

/**
 * @ORM\Column(type="datetime", nullable=true)
 */
private $last_login;
我发现:


有什么想法吗?

在尝试从MariaDB安装派生服务器版本时,Doctrine似乎在确定正确的MySQL API版本时遇到了问题

在配置中定义MySQL版本号可能会有所帮助。它在几个项目中对我起了作用,例如在Debian Stretch上使用MariaDB时

# app/config/config.yml

doctrine:
    # …
    dbal:
        # …
        server_version: 5.7

这将导致Doctrine跳过MySQL版本的自动检测,并使用最新的API。

config.yml
Doctrine.yaml
(取决于Symfony的版本)中,设置数据库服务器的正确服务器版本。例如:

doctrine:
    # …
    dbal:
        # …
        server_version: mariadb-10.2.15

请注意
mariadb
前缀。

我在my.env.local中更改了数据库的URL,并且成功了。 以前(没有工作)

之后(终于工作了)


您使用的是哪个版本的
doctor/dbal
?doctor.dbal.server\u版本:“5.7”否,我指的是已安装软件包的版本(即运行
composer show
时显示的内容)。它的定义如下:
doctor.dbal.server\u版本:“5.7”
能否尝试将其设置为
5.6
(之后清除缓存)?抱歉,没有,因为我已经迁移到MySQL
DATABASE_URL=mysql://root:password@127.0.0.1:3306/db?serverVersion=10.4.12
DATABASE_URL=mysql://root:password@127.0.0.1:3306/db?serverVersion=mariadb-10.4.12