问题标签 [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.
symfony - symfony2: multiple DB connections / entity managers with doctrine migrations & schema_filter
I currently have a single database / entity manager symfony2 (2.1) app working just fine, including doctrine migrations. I am in the process of adding a second database connection + entity manager and am having trouble getting doctrine migrations to do what I want.
Essentially, I want most of my entities to live in my first, 'default' database, and have several new entities / tables in my second database - and then have doctrine migrations manage any changes to the schemas. The documentation seems to imply you can set a 'schema_filter' on the connection to achieve this.
(The use case is this: there are several installs of our app for white-labelled resellers, each with their own primary database. However, we are implementing interactive help, which will be written by us in a CMS / blog type interface and available, via this second database, to all installs.)
So far my doctrine configuration looks like this (from app/config/config.yml):
The intention is to have most of the entities / tables in the 'default' database, but exclude any table beginning with 'help_'. Conversely, the second database should contain only those tables beginning with 'help_'.
However, whenever I run a doctrine migration using either entity manager, it will simply include all tables regardless of their name.
Am I mis-using schema_filter? Is there another way to achieve my goal?
Update: It's actually worse... after the first migration using the 'help' entity manager, I am no longer able to run additional migrations using --em="help"; I receive this error:
Migrations on the original EM continue to work fine. Help?
php - Doctrine Migrations:将列更改为在生产中可以为空
我对 Doctrine Migrations 很陌生,如果这真的很明显,我很抱歉。
更新以提供更多信息
我有一个 Symfony2 实体映射如下:
这被添加到迁移中,并按照应有的方式进行部署。然后需要更新该列以接受空值,因此将其更改为:
问题是这对生成的迁移文件没有影响:
没有添加任何 ALTER 语句来处理空值。我可以删除并重建数据库,但由于已经部署了这个特定的迁移,这将导致生产数据库出现问题。我可以看到这种情况在未来再次发生,所以想多了解一点。
这是 Doctrine 和/或 Symfony2 Doctrine Migrations 捆绑包的限制吗?有没有办法在不编写自定义迁移的情况下解决这个问题?
请注意,我所有其他迁移工作正常,唯一的问题是向现有字段添加可为空的选项。
php - Doctrine Migrations 项目是否与 Doctrine MongoDB 兼容?
Doctrine Migrations项目是否与Doctrine MongoDB兼容?
通过搜索和查看 Doctrine Migrations 项目,我不清楚它是否与 ODM 解决方案(例如 MongoDB)以及 ORM 解决方案兼容。
如果是的话,任何人都可以建议如何将两者结合使用的示例或文章吗?
如果不是,是否有合理的替代方案?
问题背景:
我稍微了解将文档数据从文档的一个版本迁移到另一个版本的不同方法以及每种方法的优缺点。
我倾向于按照这里的建议实施逐步模式更改和迁移脚本的混合方法。利用 Jonathan Wage 在他的帖子中所写的 Doctrine MongoDB 库中的功能:Doctrine MongoDB ODM Schema Migrations。
即使这样,我也需要找到某种方法来创建迁移脚本或执行数据迁移,而 Doctrine Migrations 似乎是一个不错的首选。
顺便说一句,另一位用户警告不要使用 Jonathan Wage 上面介绍的方法来迁移数据,而是直接针对数据库运行命令(JavaScript?)。
doctrine-orm - 不使用指定配置的学说迁移
我已经在我的 ZF2 项目中使用 Doctrine and Migrations 几个星期了,没有问题。我一直在通过指定我自己的配置文件来执行迁移:
我最近通过 composer 将Codeception引入到我的项目中,当我最近去执行新的迁移时(使用与上述相同的命令),我收到以下错误:
这不是我在配置文件中指定的目录。起初我认为 Doctrine Migrations 完全忽略了我的 --configuration 论点。当我跟踪它时,我发现 Doctrine Migrations 没有使用我的 --configuration 参数,因为它已经加载了一个配置文件。
有谁知道这个配置文件可能来自哪里?我可以通过在 AbstractCommand getMigrationConfiguration() 中注释掉条件来暂时解决这个问题,但从长远来看,我宁愿不必依赖这个。我还将尝试删除代码接收,看看是否有任何影响。任何帮助表示赞赏。
doctrine - 如何使用 Doctrine 迁移更新多个数据库?
我有几个数据库需要应用迁移。有没有办法通过 Doctrine 迁移将更新应用于所有这些?
doctrine - 防止 Doctrine 迁移差异删除表
我目前正在对现有的大型数据库进行“Doctrinizing”。这个过程运行良好,我们慢慢能够用实体和 DQL 替换旧的原始查询代码。
我们最近发现了很棒的 Doctrine Migrations 项目,它似乎是管理数据库更改的完美候选者。然而,我们遇到了一些障碍。
我们的数据库非常大,我们正在一点一点地重构应用程序的各个方面。我们目前有大约 40% 的数据库表示为实体。问题是当我们在部分转换的数据库上运行“差异”时,差异想要删除大量表,因为这些表不存在实体。我们可以手动编辑差异,但它会变得非常麻烦并且可能容易出错。
问题是; 是否可以创建一个差异并告诉差异过程不要删除任何不存在实体的表?
symfony - 迁移版本 20130915081732 已注册到类 Doctrine\DBAL\Migrations\Version
我只想生成一个新的迁移类
我的 config.yml 看起来像
路径和命名空间是正确的,但此文件夹中已经有迁移(也是版本 20130915081732)。我不知道怎么了,也许你能帮帮我?
谢谢。
php - 如何编写可以将数据重新分配到新表中的 Doctrine 迁移
我有一个数据库(实际上是在 Symfony1 应用程序中使用 Propel 创建的)。我正在 Symfony2 和 Doctrine 中重新实现它,但我也想借此机会对数据库进行一些重构。
我已经定义了一组 Doctrine 实体并运行了学说:migrations:diff,它为我创建了一个基本的迁移来添加表、列和约束,并删除大量的列。
但是,在删除这些列之前,我想将数据复制到一些新表中,然后将这些表中的新记录链接到第一个表中的新列。我不相信在纯 SQL 中可以做到这一点(通常,一个表的内容分布在三个或四个表中)。
这给了我一个提示,并让我找到了这个(我已经跳过了,因为我不知道“容器”可能与我的问题有什么相关性)。
但是我在 Symfony 或 Doctrine 文档中的任何地方都没有找到在迁移中实际移动数据的示例——在我看来,这似乎是迁移的核心目的之一!
有可能我可以使用上面这些链接中的提示,但是我不确定如何继续。我没有(也不想花时间来创建,尽管我确信我可以做到)现有数据库模式的 Doctrine 实体:然后我可以使用 DQL 吗?我根本不知道。
所以两个问题:
有人可以给我一个在表之间移动数据的 Doctrine 迁移示例吗?
或者,任何人都可以澄清 DQL 的语法对 Doctrine 中实体的定义的依赖程度吗?我可以使用它来指定不在实体定义中的列吗?
symfony - 如何从迁移类加载 Symfony2 固定装置?
我们已经建立了一组数据固定装置,用我们所有的参考值来为数据库播种。我们还使用DoctrineMigrationsBundle来管理模式更新。我们希望在初始模式迁移类中触发夹具加载,以便在运行任何其他模式更新之前填充系统。
我在文档中发现您可以让迁移类容器感知,但我不知道如何从那里跳转到调用/运行数据夹具。我在 Stackoverflow 或通过谷歌没有找到任何好的答案。有没有人这样做并且可以指出我正确的方向?(或者有关于结合模式迁移管理种子数据的更好方法的建议)。谢谢。
这是使用 Symfony 版本:2.4
git - Doctrine Migrations:版本控制自动生成的类
我想知道将从教义迁移中自动生成的类添加到您的版本控制系统是否是一种好习惯?
这样做的优点/缺点是什么?
感谢您的回答