问题标签 [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 投票
1 回答
1211 浏览

symfony - 指定每个实体管理器的迁移目录

我有一个使用 symfony 4 的多数据库项目,我想在一个名为 ex 的文件夹中迁移我的 db1:db1Migrations,对于 db2Migrations 也是如此。

我对该主题进行了一些研究,但我发现的只是关于 symfony2,所以我不知道如何在 symfony 4 上练习,我是 symfony 的新手 :)

如果有人可以向我解释这是如何工作的,我将不胜感激!

Symfony2 - 更改迁移目录

Symfony2 使用教义 2 迁移多个数据库

我的教义.yml

0 投票
1 回答
41 浏览

doctrine - 教义,如何在您刚刚在本地进行的两次迁移中进行一次迁移?

所以我在本地搞砸了,做了两次迁移,第二次在第一次的基础上做了非常小的改动。我们作为一个团队同意在处理问题时尽量减少迁移。因此,在提交我的代码之前,我想从这两个中做出一个。我的问题是,我该怎么做?我是否删除它们并make:migration再次使用它会在一个文件而不是两个文件中生成正确的最后更新版本,还是我必须做其他事情?

0 投票
0 回答
45 浏览

symfony - 为什么学说迁移使用 SQL 语句而不是让实体管理器处理它?

我目前正在为一个 symfony 项目设置学说迁移。我想知道为什么自动生成的迁移使用直接 SQL 语句。例如,这些将其限制为 mysql 和 INNODB-enginge(因为它是我的本地环境)。但是它将运行的项目的数据库环境可能会有所不同。

为什么它不让实体经理处理这种事情?

例如,在 up-function 中,它会生成如下内容:

为什么它不使用 schemaTool ?喜欢:

这样它就不会取决于我的数据库设置。我错过了什么吗?还是让schemaTool处理它或使用entitymanager进行数据迁移是否有缺点?

0 投票
1 回答
2899 浏览

zend-framework3 - Doctrine Migrations 找不到生成的版本

我正在尝试用表填充数据库,但在生成它后我无法迁移到它。

我正在使用 Zend Framework 3 并使用 composer.phar 文件添加了学说-orm-module 和迁移。奇怪的是,生成新版本没有问题。我正在执行这样的命令:

新的空版本文件出现在我提供的文件夹中,没问题。但是当我想迁移到它时

我得到错误:

如果我尝试执行类似:

错误:

我正在使用 php7.3,MariaDb,并且代码在一个 vagrant box 中。

配置\自动加载\global.php

我根据这两个教程章节进行了配置:
Database Management with Doctrine ORM
Database Migrations

谢谢你的帮助!

编辑:这是完整详细的输出:

这似乎不是迁移问题,但错误可能出在哪里?

0 投票
1 回答
411 浏览

symfony - 在谷歌应用引擎上的 symfony 应用程序中进行数据库迁移

我在谷歌应用引擎(灵活)上开发了我的 symfony 4 应用程序的开发者版本。我的代码在 github 上,而不是在我运行测试并将我的应用程序构建/部署到应用程序引擎的地方进行云构建。因为它是开发人员版本,所以进行自动数据库迁移会很好。我已经搜索过,但找不到任何解决方案/文档如何实现这种自动化。

我尝试 bin/console doctrine:migrations:migrate在我的构建过程中进行额外的构建步骤,但它无法通过unix_socket=/cloudsql/(应用引擎中推荐的方法)访问数据库。我不想通过公共 ip 连接,但我想知道是否可以通过 unix 套接字连接?

我还想知道迁移步骤是否应该在应用程序部署之后或之前运行?

或者也许不需要单独运行此步骤,我可以在部署到我的应用引擎实例后运行迁移?

0 投票
0 回答
353 浏览

unit-testing - 如何在 PHPUnit 测试之前迁移 Doctrine 内存数据库?

我正在使用 Doctrine DBAL 并想使用内存中的 sqlite 数据库测试(使用 PHPUnit)我的存储库。由于它在内存中,我需要在测试之前运行迁移。

在 Laravel 中,您可以通过在测试类中包含 RefreshDatabase 特征来轻松完成此操作。

在切换到 Doctrine DBAL 之前,我使用的是 Doctrine ORM,并且能够从我的测试中设置数据库,如下所示:

我把它放在一些基DoctrineORMRepositoryTestCase类中,以便从它继承的每个单独的存储库测试类和数据库总是在测试运行之前设置。

我还没有找到用 Doctrine DBAL 做到这一点的方法。我试过跑步

从我的测试类中,我++ 1 sql queries在控制台中收到消息,听起来好像它已成功迁移(我目前只有 1 个迁移类),但随后我的所有测试都失败并显示消息no such table...

如何从我的 PHPUnit 测试中运行我的 Doctrine DBAL 迁移?

0 投票
1 回答
13 浏览

doctrine-orm - 学说名称转换配置

例如,我如何配置学说进行转换

到带有名称的数据库列location_id,由于某种原因,它创建了名称,就像locationid我运行时一样migrations:diff。我知道我可以添加name="location_id",但很烦人。我总是在 Symfony 中使用学说,它会自动将驼峰案例转换为蛇案例。但是现在我正在将教义与自定义 PHP 应用程序(不是框架)一起使用,可能它可以以某种方式进行配置,但我在教义文档中找不到任何相关信息。

0 投票
1 回答
726 浏览

php - 如何在 Symfony 5 中为迁移的表添加前缀

我目前正在学习,构建一个与现有 PHP 项目共享数据库的 Symfony 5 应用程序。我的问题是关于为教义迁移创建的所有表添加前缀。我找到了一些关于我想要做的事情的参考,但由于一些参考有点过时并且旧版本具有不同的目录结构等,我正在努力实现它们。

这个链接看起来很有希望,但我不确定应该在哪里添加它,它说:

你在你的 library/DoctrineExtensions 目录中创建这个文件

我找不到任何类似的目录。

像这样的东西,但对于 symfony 5? 如何在 symfony2 中设置表前缀

我也看了这个,但在作曲家中尝试要求它时收到一条错误消息:

问题 1 - borsaco/doctrine-prefix-bundle ^1.0 的安装请求 -> 可由 borsaco/doctrine-prefix-bundle[1.0.0] 满足。- borsaco/doctrine-prefix-bundle 1.0.0 需要 symfony/framework-bundle ^3.4|^4.0 -> 找不到匹配的包。

任何帮助/指针将不胜感激

0 投票
1 回答
147 浏览

zend-framework - 如何在学说迁移中从旧数据库中选择数据并将其插入新数据库?

我将'doctrine/DoctrineORMModule' 模块用于zend 框架3(MVC)。我已经配置了“orm_default”并且可以配置“orm_old”但不知道如何在迁移文件中使用“orm_old”。

我可以在迁移文件中执行此操作:

但总的来说,我需要运行这样的东西:

怎么做?

0 投票
1 回答
521 浏览

php - 通过“重置”到当前架构来修复损坏的迁移

我们已经接管了一个旧的(3 年)Symfony 3.3 项目,使用教义迁移 1.0 包来处理迁移。不幸的是,迁移脚本已经被破坏了一段时间,没有人注意到,所以你不能在不检查现有数据库的情况下从源代码重新构建。

我想解决这种情况,以便运行composer doctrine:migrate基本上只是运行一个虚拟脚本,该脚本创建当前模式的样子。我将如何做到这一点,以便在现有模式上运行它时不会中断?

我想我会按照这些思路做一些事情:

  1. 检查一个干净的项目(带有错误的旧迁移)
  2. 获取生产数据库转储
  3. 将生产数据库模式转储到 SQL 文件
  4. 删除旧的迁移
  5. 创建一个版本号与错误迁移中的“当前”/最高版本号相同的迁移文件
  6. 运行迁移

作为最后一步,通过删除数据库、导入生产数据库转储然后运行migrate来验证这是否确实有效,以验证没有任何中断。我只是不确定如何在 Doctrine 包的上下文中执行此操作(我是 PHP 新手),即使在咨询了文档之后(似乎并未涵盖这种情况)。