问题标签 [doctrine-migrations]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1198 浏览

symfony4 - 无法执行 bin/console 原则:迁移:迁移 RuntimeException /vendor/symfony/console/Helper/QuestionHelper.php:129

我第一次使用 rsync 将我的 Symfony 4 应用程序部署到生产环境。

然后我尝试运行学说:迁移:迁移命令。

php -v:PHP 5.6.40

中央操作系统:7.6

EasyApache4

当我执行时:

我收到以下错误:

我知道 Symfony 4 DoctrineMigrationsBundle 需要 PHP 7.1,所以我也尝试了以下方法:

我收到以下错误:

先感谢您

0 投票
1 回答
61 浏览

symfony - Symfony Web 应用程序本身如何检测未应用的 Doctrine Migrations?

处理 Doctrine Migrations 的正常方法是通过标准命令 - 在开发期间手动运行命令以例如运行差异并应用迁移,部署通常涉及通过相同的方法但自动应用它们。有时在本地实例的团队中工作时会有新的迁移,但我已经从版本控制更新了我的源代码而不是进行了部署,所以我需要手动应用新的迁移,我需要知道我需要去做!一项改进可能是在呈现的网页上显示迁移不同步且需要采取措施的警告。

有没有办法直接在 PHP/Symfony 代码中访问 Migrations API,以便我可以检测到已提交迁移和已应用迁移之间的不匹配?我还没有找到任何关于此的文档。我对代码进行了初步探讨,它似乎严重偏向于命令(足够合理)。

0 投票
1 回答
1440 浏览

php - Symfony 4 / 学说插入初始数据库数据

我正在使用 symfony 4.2 并寻找一种将初始数据插入数据库的方法。我试图创建的是类似于初始设置脚本的东西,它可以通过控制台命令调用一些 sql 插入(如固定装置,但也适用于生产环境)。

我正在考虑在教义迁移类中使用 postUp 函数,但我不想为我设置的每个生产环境重写此函数。有没有办法为此目的使用学说迁移功能,还是有首选方法?

示例工作流程:

  • 通过克隆 git 存储库来安装 symfony
  • 执行迁移以创建/更新数据库表
  • 执行设置脚本将所需的默认值插入到数据库表中

0 投票
1 回答
3557 浏览

symfony - Symfony 4 迁移在执行期间迁移失败

我的问题是我想使用

Symfony 4 的方法来更新我的数据库,而不是使用:

效果很好-至少可以这么说。

但是当我使用迁移时,我总是在教义:迁移:迁移命令上得到以下错误:

在此处输入图像描述

0 投票
1 回答
3210 浏览

doctrine-orm - 如何在生产服务器上使用学说迁移汇总功能?

我已阅读:https ://symfony.com/doc/master/bundles/DoctrineMigrationsBundle/index.html

我很好奇: doctrine:migrations:rollup。我知道它做了什么(删除我的迁移,使用当前数据库的整个转储创建一个迁移)。

但我不明白如何在生产中使用它:

当我在本地开发中汇总时,将其推送到我的 CD-Pipeline 中,它会在生产中失败,对吗?因为转储将在已经进行的迁移之上执行。

我是否必须手动删除所有迁移版本,只需将“汇总”-dump-migration 标记为在生产中完成?

0 投票
1 回答
282 浏览

doctrine - 如何防止学说产生不必要的迁移?

每个人。我使用 Symfony 4.2 并遵循数据库优先的方法并具有自动生成的实体;但是随后我需要对实体中的字段定义进行一些更改,但我不想影响数据库结构。一切正常,但如果我尝试创建迁移,则学说包含迁移中的所有差异,我找不到阻止这种行为的方法。我试过schema_filter: ~^migration_versions$~了,但不知何故没有帮助。

所以问题是:1)当数据库和实体中的列定义略有不同时,它是 prod 上的正常应用程序状态吗?

2)在创建迁移时,我怎么能说教义忽略某些表中的差异?谢谢。

0 投票
1 回答
531 浏览

postgresql - Symfony 上的 Doctrine 迁移以更新多个 Schema 中的表

我们正在将我们的软件从我们自己的和遗留的 PHP 框架迁移到 Symfony。我们的应用程序对每个用户都有不同的架构。所以除了公共模式,我们还有大约 2000 个用户模式。假设我们有一个类似于市场的系统,每个用户都可以在他们自己的 Schema 中自定义一些表,但我们不要专注于此。

我们目前正在寻找两个问题的最佳解决方案:

  1. 当一个新用户注册时,我们的 Symfony 应该只为那个新创建的用户模式运行迁移。
  2. 当我们创建迁移时,我们需要该迁移影响所有现有的用户模式。

目前,在我们的旧系统中,我们使用一堆 PHP 逻辑进行此类迁移,我希望避免自定义 DoctrineMigrationsBundle 或在一次迁移中包含数百行 PHP 代码。

所以我想知道有没有更简单的方法来处理 Doctrine/Symfony 中的所有用户模式,所以当我运行时:

我们所有现有的用户模式都已更新。


我们的用户 Schema 名称是 like app234234app453453除了那些 Schemas 我们只有默认publicSchema

我们正在使用:

  • Symfony 4.3
  • PostgreSQL 9.1
  • PHP 7.3
0 投票
4 回答
3569 浏览

php - Symfony 4:如何安全地“加入”迁移?/ 删除第一个和最后一个之间的迁移?

我最近正在调整我的数据库,并注意到我在现有的 2 之上进行了 5 次迁移。所以总共 7 次,m1,m2,...,m7。从这5个中,我只想要最新版本。所以我想我可以删除 m3、m4、m5、m6、m7 并再次迁移,这将导致 m3 已经包含我满意的最终版本。现在我以前从未这样做过,想知道最安全的方法是什么?

我正在使用 PHPStorm。我可以手动删除它们(右键单击 PHPStorm 然后删除)然后转到命令行并执行php bin/console doctrine:migrations:migrate吗?还是我需要做php bin/console doctrine:schema:update?或者这真的是个坏主意吗?

0 投票
0 回答
387 浏览

php - 教义迁移:不能将多个命令插入到准备好的语句中

我正在尝试为具有相当大的 postgres 数据库的项目准备第一次迁移。我已经转储了生产数据库模式,将其从注释和空行中清除,并将整个作为文本放入单个变量中。然后我打电话

当我尝试运行此迁移时,我被打了脸

SQLSTATE [42601]:语法错误:7 错误:无法将多个命令插入到准备好的语句中

我真的需要将每个 SQL 命令拆分为单独调用 addSql 方法吗?清除的转储中有几千行 SQL。手工做会很痛苦,我不愿意用脚本来做,因为可能会出错,我什至不会注意到它。

0 投票
0 回答
451 浏览

php - 教义迁移令

Version{YmdHis}Doctrine 使用名称格式生成迁移。

想象一下,有几个团队在一个项目上工作。VCS 中有两个分支:fix_tablenamefeature_tablename.

feature_tablename有一个添加新字段的迁移foo_field。并且fix_tablename有一个迁移bar_fieldfoo_field.

第一个分支中的迁移具有较早的版本。下一步,我们合并分支中的两个release_august分支。所以我们有一个难以察觉的冲突。在大团队中使用 Doctrine 迁移的更好方法是什么?

PS 在之前的项目中,我们有自定义迁移系统。所有迁移都有增量(1、2、3)版本。在上述情况下,由于迁移文件名,我们遇到了 VCS 冲突。