Symfony 4.3 学说迁移问题

Posted

技术标签:

【中文标题】Symfony 4.3 学说迁移问题【英文标题】:Symfony 4.3 Doctrine Migration issue 【发布时间】:2019-12-28 01:25:23 【问题描述】:

我对教条:迁移:迁移有疑问。几天前我运行了一个名为“20190819021520”的版本,并且运行良好。数据库已更新,没有任何问题。今天我正在尝试进行另一次迁移,它正在尝试再次执行 20190819021520,当然会抛出错误,说表列已经存在 bla bla bla。当然存在,20190819021520 已经运行成功了。我该如何解决? migration_versions 表甚至输入了 20190819021520。有什么方法可以忽略/删除 20190819021520 迁移位置而不尝试在 mysql 数据库上撤消?

这是我的输出:

php bin/控制台原则:迁移:迁移

                Application Migrations

警告!您即将执行一个数据库迁移,它可能 导致架构更改和数据丢失。你确定你想 继续? (y/n)y 从 20190822165301 迁移到 20190822165848

++迁移20190819021520

 -> ALTER TABLE job_contact CHANGE email email VARCHAR(255) DEFAULT NULL, CHANGE phone phone VARCHAR(255) DEFAULT NULL, CHANGE fax

传真 VARCHAR(255) 默认 NULL -> ALTER TABLE job_location CHANGE zip zip VARCHAR(15) DEFAULT NULL, CHANGE route route VARCHAR(255) DEFAULT NULL, CHANGE street_number street_number VARCHAR(255) DEFAULT NULL -> ALTER TABLE job_post CHANGE job_location_id job_location_id INT DEFAULT NULL,CHANGE job_contact_id job_contact_id INT DEFAULT NULL, CHANGE user_id user_id INT DEFAULT NULL, CHANGE 专家 专家 VARCHAR(255) 默认为 NULL,更改 board_cert board_cert VARCHAR(255) DEFAULT NULL,更改 expire_date expire_date DATETIME DEFAULT NULL,更改 company_name company_name VARCHAR(255) DEFAULT 空值 -> ALTER TABLE 用户添加 company_name VARCHAR(255) DEFAULT NULL, ADD company_location JSON DEFAULT NULL COMMENT '(DC2Type:json_array)', 更改角色角色 JSON DEFAULT NULL COMMENT '(DC2Type:json_array)' 迁移 20190819021520 在执行期间失败。错误异常 执行 'ALTER TABLE user ADD company_name 时发生 VARCHAR(255) 默认空值,添加公司位置 JSON 默认空值 COMMENT '(DC2Type:json_array)',更改角色角色 JSON DEFAULT NULL 评论'(DC2Type:json_array)'':

SQLSTATE[42S21]:列已存在:1060 列名重复 '公司名称'

在 AbstractMySQLDriver.php 第 65 行:

执行 'ALTER TABLE user ADD 时发生异常 company_name VARCHAR(255) 默认为 NULL,添加 company_location JSON DEFAULT NULL COMMENT '(DC2Type:json_array)',更改角色角色 JSON DEFAULT NULL COMMENT '(DC2Type:json_array)'':

SQLSTATE[42S21]:列已存在:1060 列名重复 '公司名称'

在 PDOConnection.php 第 90 行:

SQLSTATE[42S21]:列已存在:1060 列名重复 '公司名称'

在 PDOConnection.php 第 88 行:

SQLSTATE[42S21]:列已存在:1060 列名重复 '公司名称'

有什么办法可以跳过 20190819021520,因为它已经在几天前完成了?

【问题讨论】:

【参考方案1】:

您应该尝试使用以下命令将其添加到 migration_versions 表中:

$ php bin/console doctrine:migrations:version 20190819021520 --add

https://symfony.com/doc/master/bundles/DoctrineMigrationsBundle/index.html#skipping-migrations

【讨论】:

问题表明它已经存在于表中:“migration_versions 表甚至输入了 20190819021520”

以上是关于Symfony 4.3 学说迁移问题的主要内容,如果未能解决你的问题,请参考以下文章

实体的 Symfony 学说问题 [重复]

Symfony Messenger 4.3 - 从理论传输中消费消息失败(抛出异常)

Symfony/学说

Symfony2 学说清除缓存

Symfony2 和空关系的学说

为啥 symfony 学说 findall() 返回 id NULL