问题标签 [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 回答
838 浏览

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。(见帖子配置的底部)

如果有人有任何想法,我将不胜感激!

发布实体配置

类别实体配置

用户实体配置

类别实体代码

发布实体代码

0 投票
2 回答
3606 浏览

php - 如何测试教义迁移?

我正在开发一个在开发环境中没有生产数据库副本的项目。

有时我们会遇到数据库迁移问题——它们传递了开发数据库,​​但在生产/测试中失败。

这通常是因为开发环境数据是从使用最新实体的夹具加载的 - 正确填充所有表。

有什么简单的方法可以确保 Doctrine Migration(s) 在生产中通过?

您是否有/知道任何方法来编写自动测试,以确保数据将被正确迁移,而无需下载生产/测试数据库并手动运行迁移?

我想避免将生产/测试数据库下载到开发机器,这样我就可以检查迁移,因为数据库包含私有数据并且它可能非常大。

0 投票
1 回答
3760 浏览

symfony - 学说迁移不承认最后一次迁移

我正在使用 Doctrine Migrations,直到现在所有迁移都运行良好。我创建的最后一个在登台服务器上无法识别,但它在我的本地机器上运行良好。

在此处输入图像描述

捆绑包将版本 20151006091137 识别为最新迁移,但它应该是 20151011132851。正如您在图像中看到的迁移文件存在于服务器上。

在我的本地机器上,Doctrine 正确地看到了最新版本。

有人知道吗?

0 投票
1 回答
1054 浏览

symfony - Symfony 2.7 - 带有 DateTimes 的 Doctrine 迁移陷入永久循环

我已经在互联网、书籍和论坛上搜索了这个问题的答案,希望这里有人能提供帮助。

我有一个标准的 Symfony 2 项目设置,在教义中使用实体注释。我遇到的问题是我的任何包含 datetime 类型的实体都希望不断迁移。因此,在初始迁移到数据库后,我可以重新运行 docrine:schema:update --dump-sql ,但我仍然看到:

我可以整天坐在这里运行迁移并检查它,它会保持不变。这些实体也没有什么特别之处:

有人对此有任何想法吗?我现在完全被难住了:(。

mysql 设置也是当前的 5.6.25

迁移后的列结构看起来像这样

0 投票
2 回答
1627 浏览

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,那就太好了。

可能还不兼容?

0 投票
1 回答
2743 浏览

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我得到以下信息:

0 投票
1 回答
269 浏览

symfony - 在切换到 php7 后,在 prod 中运行学说时出现 Segfault:migrations:status

跑步:

给我一个 Segfault,但仅在 prod 中,并且仅在填充缓存之后。因此,清除缓存后,命令运行正常。但是,第二次运行该命令时,我得到了 Segfault。

我在启用 APCU 的情况下运行最新版本的doctrine/migrationsSymfony 2.7.4 和 PHP7.0.0。

该问题在切换到 PHP7 后开始显现。我在我的 Mac(el capitan)和 Ubuntu 服务器(14.04)上都遇到了同样的问题。

有没有人遇到类似的问题?

谢谢!

0 投票
1 回答
15520 浏览

symfony - 使用 Doctrine 迁移重命名表名

我几乎到处搜索,但找不到任何东西。

是否有命令或过程来更改表的名称(所以在教义注释中)而不丢失数据?

基本上,会产生类似的东西

或者

这里获取的 MySQL 命令

我应该手动编写迁移文件doctrine:migrations:generate吗?

0 投票
1 回答
2246 浏览

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 但捆绑安装时仍然出现相同的错误

0 投票
1 回答
1453 浏览

doctrine-orm - 在教义迁移中触发

我正在尝试在学说迁移类中创建一个相当复杂的触发器:

https://github.com/2ndQuadrant/audit-trigger/blob/master/audit.sql

第一个冲动只是将整个触发代码放在一个大块中并添加它

和:

但是迁移失败

这甚至可以在学说迁移中进行管理吗?是否有解决方法/最佳实践来做到这一点?