问题标签 [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 - 没有进行任何更改时,学说迁移会生成更新
我使用学说迁移来更新我的数据库。我创建了一个实体,它在 mediumtext 中保存和图像 sotre:
因此,Doctrine 迁移生成了这个 SQL 来更新我的架构:
但是现在每次我检查我的实体和我的模式学说迁移之间的差异时,都会看到变化
即使接受此迁移,它仍会建议我对我的架构进行此修改。
也许羽绒可以帮助您了解发生了什么
我也试过了doctrine:shema:update
,它也看到了不同。有没有人知道为什么教义会这样做?
symfony - 回滚原则:使用 Deployer 进行迁移
我有一个 Symfony 3 应用程序,我使用部署程序来部署我的应用程序。我也在使用Doctrine Migrations来迁移我的数据库。
我使用symfony3 配方。
当我运行时dep deploy
,部署程序会迁移我的数据库。但是,当我运行dep rollback
它时,它不会回滚相应的学说迁移。
我已经通过谷歌和 Stackoverflow 搜索找到解决这个问题的人,但我似乎找不到任何人。
你有个好主意吗?
symfony-1.4 - 如何在学说迁移中从另一个字段设置字段的默认值?
我在 symfony 1.4 中有一个应用程序。我使用学说迁移来修改我的数据库和我的实体。但是我想知道当我向表中添加一列以从位于另一个表中的另一个字段中设置默认值(对于这个新列)时是否有可能?
这是我用来进行学说迁移的文件示例:
我希望很清楚,否则我可以解释;)。如果有人有想法或可以帮助我,那就太好了!预先感谢 !
doctrine - 教义迁移:为 mysql 和 postgresql 创建代码
我在 Symfony 3.4.4 项目中使用 Doctrine ORM 2.6.1。我的一些实例在 MySQL 数据库上运行,一些在 Postgresql 上运行,一些安装甚至可以访问 MicosoftSQL 服务器。这可以正常工作,无需对我的项目或实体进行任何特殊更改,我只需要配置相应的连接参数。
但是:如果我创建迁移,迁移文件中只会创建与当前数据库连接兼容的语句。
我使用 postgres 连接进行开发,所以我只生成 postgresql 语句,例如:
我的问题:如何告诉迁移包为每个平台创建语句,例如:
编辑:
因此,我认为解决我的问题的唯一方法是定义多个数据库连接和实体管理器,并始终为每种连接类型创建不同的迁移。根据这篇文章,我可以将几个连接定义为:
php - 如何将 DoctrineMigrationsBundle 与 yaml 文件一起使用?
当我像上面的示例一样使用 Doctrine Annotation 文件时,该命令php bin/console doctrine:migrations:diff
可以完美运行。
由于某些原因(特征、接口),我必须使用学说 yaml 文件来声明我的实体。一旦我用 yaml 文件替换注释,迁移命令就会抛出此错误:
在 OrmSchemaProvider.php 第 41 行:
没有要处理的映射信息
这是我的 yaml 文件:
由于这个错误,我认为它没有找到我的 yaml 文件。它在错误的目录中吗?把这个文件放在哪里?我在源代码中没有看到任何声明我的 yaml 文件目录的内容。我已经在这个目录中尝试过但没有成功:
- 源/实体
- src/资源/config/doctrine/
- src/Resources/config/doctrine/App
- src/Resources/config/doctrine/App/Entity
- src/Resources/config/doctrine/Entity
我究竟做错了什么?
环境:PHP 7.2.3,Symfony 4.1.1(内核:src,环境:开发,调试:真)
php - 学说迁移:具有相同表名的多个模式
我正在将 Doctrine Migrations 集成到现有项目和迁移文件中,每当我在Schema
(例如$schema->getTables()
)上调用方法时,都会收到此错误:
我认为这是因为我有config
两个模式中命名的表,这就是它得到两行的原因。我不确定如何避免这个问题,并且没有选项可以在其中声明默认migrations.xml
模式migrations-db.php
。
我真的很想在迁移中使用 DBAL,但不幸的是,这让我别无选择,只能使用this->addSql()
.
symfony - Symfony 命令调用其他命令并等待确认
我已经设置了一个像这里描述的元命令https://symfony.com/doc/3.4/console/calling_commands.html
它首先删除数据库,然后从头开始运行迁移,最后初始化我的数据。
自从我最近从创建模式切换doctrine:schema:create
到doctrine:migrations:migrate
好的,这确实有效 - 有时。当我在本地执行此操作时,它可以工作。
但我在 docker 容器和 Gitlab CI 工具链中使用了所有这些。
为此我有一个shell脚本init.sh
我在我的 Gitlab-CI 测试操作的设置阶段执行(在容器运行之后:
然后输出让我发疯:
这意味着第一个命令按原样执行(删除数据库),但第二个命令等待“用户”输入“y”作为确认。
请注意,我提供了 BOTH--no-interaction
和$migrateInput->setInteractive(false);
.
奇怪的是,这个命令在本地运行良好,但不是在 Gitlab-CI 运行它时!编辑:即使在本地,我也在运行一个 php docker 容器。如果我在我的 Mac 上执行docker exec php_container bash init.sh
,脚本运行正确!
我在 docker 主机上使用本地 gitlab-ci-runner 容器(一年多以来我工作得很好)。
编辑:我还测试了将 3 个命令放入 中init.sh
,结果相同。第二个脚本在从 gitlab-ci 执行时等待确认。
接下来,我直接把这三个命令放进去gitlab-ci.yml
:
这确实有效!所以看起来 bash 执行有点错误?
symfony - phpstan 抱怨 Symfony 3.4 中的 Doctrine Migrations with Flex 项目
我有一个使用 Flex 构建在 Symfony 3.4 上的项目,并且我已经将 phpstan 添加到它以进行静态分析。
它抱怨找不到我的迁移课程:
Class DoctrineMigrations\Version20180831185050 was not found while trying to analyse it - autoloading is probably not configured properly.
事实上,Doctrine Migrations 生成的文件不符合自动加载器模式,但在其他方面工作得很好。
我能做些什么来停止抱怨这个吗?
travis-ci - 如何部署 PHP 学说/phinx 迁移?
我正在尝试在 TravisCI 中为使用 composer 库的 PHP 项目设置一个相当简单的 CI/CD 工具链,从而通过 rsync 在裸机服务器上进行部署。步骤是:
- 在 git push 时从 Github Repo 获取代码。
- 运行
composer install
以获取依赖项。 - (执行单元测试 - 集成测试) - 尚未设置
- Lint,代码质量步骤
- 使用 ssh 密钥通过 rsync 将代码部署到远程 apache 服务器。
到目前为止,工具链工作正常,但我似乎无法理解如何在远程服务器上自动执行 SQL 迁移(在 Doctrine 或 Phinx 中)。
doctrine:migrations:migrate
通过 ssh 作为 TravisCI 部分的最后一步执行的策略是deploy
最佳选择,还是有其他更好的选择?您如何部署迁移?
非常感谢
symfony - 语法错误或访问冲突:1064 You have an error in your SQL In symfony
当我运行命令时,php bin/console doctrine:migration:migrate
我得到了这个错误,我不知道是从哪里来的。
命令行错误:在 AbstractMySQLDriver.php 第 99 行:
执行'CREATE TABLE user (id INT AUTO_INCREMENT NOT NULL, email VARCHAR(180) NOT NU LL, roles JSON NOT NULL, password VARCHAR(255) NOT NULL, UNIQUE INDEX UNIQ_8D93D649E7927C74 (email), PRIMARY KEY(id ) 时发生异常) 默认字符集 utf8mb4 整理 utf8mb4_unicode_ci ENGINE = InnoDB':
SQLSTATE[42000]:语法错误或访问冲突:1064 您的 SQL 语法有错误;检查与您的 MariaDB 服务器版本相对应的手册,以在第 1 行的“JSON NOT NULL, password VARCHAR(255) NOT NULL, UNIQUE INDEX UNIQ_8D93D649E7927C7”附近使用正确的语法
在 PDOConnection.php 第 109 行:
SQLSTATE[42000]:语法错误或访问冲突:1064 您的 SQL 语法有错误;检查与您的 MariaDB 服务器版本相对应的手册,以在第 1 行的“JSON NOT NULL, password VARCHAR(255) NOT NULL, UNIQUE INDEX UNIQ_8D93D649E7927C7”附近使用正确的语法
在 PDOConnection.php 第 107 行:
SQLSTATE[42000]:语法错误或访问冲突:1064 您的 SQL 语法有错误;检查与您的 MariaDB 服务器版本相对应的手册,以在第 1 行的“JSON NOT NULL, password VARCHAR(255) NOT NULL, UNIQUE INDEX UNIQ_8D93D649E7927C7”附近使用正确的语法
我的环境 我的环境