问题标签 [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.
php - Doctrine 2 Migrations Diff 不会为每个表生成多个外键
我正在使用 Symfony / Doctrine 2 创建一个简单的博客,并遇到了php app/console doctrine:migrations:diff
命令问题。
信息:
- PostgreSQL
- 相关表:Post、Category、fos_user
- Post 表应该有 2 个外键:user_id 和 category_id
- Diff 只在 post 表中生成一个外键
- 如果用户的 manyToOne 声明出现在 post 实体的教义配置文件中的类别 id 之前,则 post 表将获得 user_id 外键但没有 category_id(当差异运行时)
- 如果将类别实体的 manyToOne 声明移到用户实体之上,则 post 表将获得 category_id 但没有 user_id。
我已经尝试了带有和不带有 inversedBy 部分、joinColumn 部分等的 manyToOne 声明。下面是我的 YML 配置。使用此配置,将在 post 表中创建一个 user_id 外键,但没有类别 ID。(见帖子配置的底部)
如果有人有任何想法,我将不胜感激!
发布实体配置
类别实体配置
用户实体配置
类别实体代码
发布实体代码
php - 如何测试教义迁移?
我正在开发一个在开发环境中没有生产数据库副本的项目。
有时我们会遇到数据库迁移问题——它们传递了开发数据库,但在生产/测试中失败。
这通常是因为开发环境数据是从使用最新实体的夹具加载的 - 正确填充所有表。
有什么简单的方法可以确保 Doctrine Migration(s) 在生产中通过?
您是否有/知道任何方法来编写自动测试,以确保数据将被正确迁移,而无需下载生产/测试数据库并手动运行迁移?
我想避免将生产/测试数据库下载到开发机器,这样我就可以检查迁移,因为数据库包含私有数据并且它可能非常大。
symfony - Symfony 2.7 - 带有 DateTimes 的 Doctrine 迁移陷入永久循环
我已经在互联网、书籍和论坛上搜索了这个问题的答案,希望这里有人能提供帮助。
我有一个标准的 Symfony 2 项目设置,在教义中使用实体注释。我遇到的问题是我的任何包含 datetime 类型的实体都希望不断迁移。因此,在初始迁移到数据库后,我可以重新运行 docrine:schema:update --dump-sql ,但我仍然看到:
我可以整天坐在这里运行迁移并检查它,它会保持不变。这些实体也没有什么特别之处:
有人对此有任何想法吗?我现在完全被难住了:(。
mysql 设置也是当前的 5.6.25
迁移后的列结构看起来像这样
php - 无法使用作曲家使用 Symfony3 安装 DoctrineMigrationsBundle
我对 Symfony 还很陌生,我想我会按照他们的指示(http://symfony.com/doc/current/book/installation.html)使用 Symfony 安装和配置一个新项目。
我选择了“Creating Symfony Applications without the Installer”选项并使用 composer 创建了一个新项目:
我按照信中的其余说明进行操作,并启动并运行了我的应用程序。到现在为止还挺好。现在我想按照他们的建议(http://symfony.com/doc/current/bundles/DoctrineMigrationsBundle/index.html)使用 DoctrineMigrationsBundle 安装数据库迁移。这就是事情变得棘手的地方。
他们的页面顶部显示“2.1 版本”,没有可供选择的替代版本。我猜这意味着这些说明适用于 Symfony2.1。无论如何,我继续运行列出的命令。我的意思是基本安装过程可以改变多少?
这导致作曲家的一大堆错误告诉我它无法解决要求(见下文)以及我挂断电话的地方。我试图安装几个其他版本的捆绑包和其他组件,并用谷歌搜索了这个问题,但找不到任何东西。
使用包信息加载作曲家存储库更新依赖项(包括 require-dev)您的需求无法解析为可安装的包集。
抱歉输出不好,但看在上帝的份上,我不知道如何正确格式化它:/
无论如何,如果无论如何可以将我推向正确的方向如何使用 Symfony3 安装 DoctrineMigrationsBundle,那就太好了。
可能还不兼容?
php - SQLSTATE [HY000]:一般错误:1025 Error on rename error when drop foreign key in Doctrine Migration
当我在 Doctrine 迁移中运行以下查询时,我看到以下错误:
ALTER TABLE crmpicco_course_version DROP FOREIGN KEY FK_C060B146DE13F470
这是我要更改的表:
是什么阻止我成功删除这个外键?
当我运行时,SHOW ENGINE INNODB STATUS
我得到以下信息:
symfony - 在切换到 php7 后,在 prod 中运行学说时出现 Segfault:migrations:status
跑步:
给我一个 Segfault,但仅在 prod 中,并且仅在填充缓存之后。因此,清除缓存后,命令运行正常。但是,第二次运行该命令时,我得到了 Segfault。
我在启用 APCU 的情况下运行最新版本的doctrine/migrations
Symfony 2.7.4 和 PHP7.0.0。
该问题在切换到 PHP7 后开始显现。我在我的 Mac(el capitan)和 Ubuntu 服务器(14.04)上都遇到了同样的问题。
有没有人遇到类似的问题?
谢谢!
symfony - 使用 Doctrine 迁移重命名表名
我几乎到处搜索,但找不到任何东西。
是否有命令或过程来更改表的名称(所以在教义注释中)而不丢失数据?
基本上,会产生类似的东西
或者
我应该手动编写迁移文件doctrine:migrations:generate
吗?
php - 无法通过 composer 安装 DoctrineMigrationsBundle
项目使用 Symfony 2.8.2,PHP 版本为 5.6
我正在尝试安装 DoctrineMigrationsBundle 并且作曲家失败并出现错误:
Problem 1
- doctrine/doctrine-migrations-bundle 1.0.0 requires doctrine/migrations ~1.0@dev -> satisfiable by doctrine/migrations[v1.0.0, v1.1.0, v1.2.0, v1.2.1, v1.2.2, v1.3.0].
- doctrine/doctrine-migrations-bundle 1.0.1 requires doctrine/migrations ~1.0@dev -> satisfiable by doctrine/migrations[v1.0.0, v1.1.0, v1.2.0, v1.2.1, v1.2.2, v1.3.0].
- doctrine/doctrine-migrations-bundle 1.1.1 requires doctrine/migrations ~1.0 -> satisfiable by doctrine/migrations[v1.0.0, v1.1.0, v1.2.0, v1.2.1, v1.2.2, v1.3.0].
- doctrine/doctrine-migrations-bundle v1.1.0 requires doctrine/migrations ~1.0 -> satisfiable by doctrine/migrations[v1.0.0, v1.1.0, v1.2.0, v1.2.1, v1.2.2, v1.3.0].
- doctrine/migrations v1.3.0 requires php ^5.5|^7.0 -> your PHP version (5.5.28) or "config.platform.php" value does not satisfy that requirement.
- doctrine/migrations v1.2.2 requires php >=5.4.0 -> your PHP version (5.5.28) or "config.platform.php" value does not satisfy that requirement.
- doctrine/migrations v1.2.1 requires php >=5.4.0 -> your PHP version (5.5.28) or "config.platform.php" value does not satisfy that requirement.
- doctrine/migrations v1.2.0 requires php >=5.4.0 -> your PHP version (5.5.28) or "config.platform.php" value does not satisfy that requirement.
- doctrine/migrations v1.1.0 requires php >=5.4.0 -> your PHP version (5.5.28) or "config.platform.php" value does not satisfy that requirement.
- doctrine/migrations v1.0.0 requires php >=5.4.0 -> your PHP version (5.5.28) or "config.platform.php" value does not satisfy that requirement.
- Installation request for doctrine/doctrine-migrations-bundle ^1.0 -> satisfiable by doctrine/doctrine-migrations-bundle[1.0.0, 1.0.1, 1.1.1, v1.1.0].
我的 composer.json 'require' 块:
"require": {
"php": ">=5.3.9",
"symfony/symfony": "2.8.*",
"doctrine/orm": "^2.4.8",
"doctrine/doctrine-bundle": "~1.4",
"symfony/swiftmailer-bundle": "~2.3",
"symfony/monolog-bundle": "~2.4",
"sensio/distribution-bundle": "~5.0",
"sensio/framework-extra-bundle": "^3.0.2",
"incenteev/composer-parameter-handler": "~2.0",
"sensio/generator-bundle": "~2.3",
"friendsofsymfony/user-bundle": "~2.0@dev",
"sonata-project/admin-bundle": "2.3.*",
"sonata-project/doctrine-orm-admin-bundle": "2.3.*",
"stof/doctrine-extensions-bundle": "^1.2"
},
我的配置有什么问题?我试图回滚到 sf2.3 但捆绑安装时仍然出现相同的错误
doctrine-orm - 在教义迁移中触发
我正在尝试在学说迁移类中创建一个相当复杂的触发器:
https://github.com/2ndQuadrant/audit-trigger/blob/master/audit.sql
第一个冲动只是将整个触发代码放在一个大块中并添加它
和:
但是迁移失败
这甚至可以在学说迁移中进行管理吗?是否有解决方法/最佳实践来做到这一点?