如何在Symfony 4中更新数据库?

3
当我执行以下命令时:
php bin/console doctrine:schema:update --force
数据库会被更新,但之后这个命令:
php bin/console doctrine:schema:validate
一直说数据库不同步(见下面的截图)。我错过了什么/做错了什么?

error message


2
使用 php bin/console doctrine:schema:update --dump-sql 命令。你可能会有一些可空的布尔列,在使用 MariaDb 时,Doctrine 存在一个“bug”。 - Mcsky
如果您使用MariaDb,请确保在 config/packages/doctrine.yaml 文件中指定了正确的服务器版本,应该类似于 server_version: 'mariadb-10.2.12' - Yoann Kergall
1个回答

2

根据数据库类型和操作系统不同,测试可能会给出一些“假阴性”的结果,这意味着你的数据库已经没问题了,但Doctrine并没有完全理解。在我参与的几个项目中都遇到过这种情况,无论使用Symfony哪个版本(也就是Symfony 2、3和4)。

此外,在Symfony 4中,你可以使用迁移,如文档中所述:the docs

bin/console make:migration

这个命令会在 src/Migrations 中创建一个迁移文件,但不会触及数据库。

为了理解发生了什么(从Doctrine的角度来看),您可以查看迁移文件:它是一个具有两个方法(up()down())的PHP类。

up() 方法将包含对齐数据库与映射文件所需的查询。

要应用所有待处理的迁移,请运行:

bin/console doctrine:migrations:migrate

这是正确的,但您应该提供更多的上下文,以便让OP了解这种方法的优势。 - DonCallisto

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接