Shopware 6.4.20.2升级至6.5.3.0时出现Doctrine错误
解决Doctrine升级时1091外键删除错误
问题根源
升级脚本尝试删除一个不存在的外键 fk.order_customer.salutation_id,导致MySQL抛出1091语法/权限错误。
解决步骤
确认外键是否存在
连接到目标数据库,执行以下SQL查询,检查order_customer表的所有外键:-- 方法1:查询系统表获取外键列表 SELECT CONSTRAINT_NAME FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE WHERE TABLE_NAME = 'order_customer' AND CONSTRAINT_SCHEMA = '你的数据库名称'; -- 方法2:查看表的完整创建语句,直接找FOREIGN KEY部分 SHOW CREATE TABLE order_customer;检查结果中是否包含
fk.order_customer.salutation_id这个外键。外键不存在时的处理
找到升级脚本(或Doctrine迁移文件)中执行DROP FOREIGN KEY fk.order_customer.salutation_id;的代码行,直接注释或删除该行,然后重新运行升级向导。外键存在但名称不匹配时的处理
如果查询到的外键名称和脚本里的不一致(比如大小写、符号差异),将脚本中的外键名替换为数据库中实际存在的名称,再执行升级。Doctrine迁移同步问题
如果是Doctrine自动生成的迁移文件,先执行以下命令检查实体元数据和数据库结构是否同步:doctrine:schema:validate根据校验结果调整实体类或迁移文件,确保元数据与实际数据库一致后再执行升级。
内容的提问来源于stack exchange,提问作者Christian Michael
相关产品推荐
相关产品推荐

