Shopware 6.5.4.0搭配MariaDB安装失败:variant_listing_config SQL错误
问题概述
- 环境配置:PHP 8.2.8,测试过两个MariaDB版本:
10.5.22-MariaDB-1:10.5.22+maria~ubu2004(搭配MySQLi扩展)10.6.15
- 故障表现:数据库表已生成,但安装进行到第510步(共606步,进度84%)时失败
- 具体报错:
510/606 [=======================░░░░░] 84%06:51:22 ERROR
[app] Migration: "Shopware\Core\Migration\V6_4\Migration1656397126AddMainVariantConfiguration" failed:
"An exception occurred while executing a query: SQLSTATE[HY000]:
General error: 1901 Function or expression 'variant_listing_config' cannot
be used in the CHECK clause ofvariant_listing_config"
根因分析
MariaDB 10.6及以下版本对CHECK约束的语法支持存在限制,不允许在CHECK子句中引用与约束同名的列或使用这类表达式,而Shopware的该迁移脚本恰好使用了这种写法,导致执行报错。
解决办法
1. 升级MariaDB到10.7+(推荐)
MariaDB 10.7及后续版本完善了CHECK约束的兼容性,能够正常解析Shopware迁移脚本中的语法,升级后重新执行安装即可。
2. 修改迁移脚本(应急方案)
找到迁移文件Shopware\Core\Migration\V6_4\Migration1656397126AddMainVariantConfiguration.php,删除或调整其中针对variant_listing_config列的CHECK约束代码,完成安装后再根据业务需求手动补全约束。注意:修改核心文件可能影响后续版本升级,需谨慎操作。
3. 切换至MySQL 8.0+
若无法升级MariaDB,可改用Shopware官方推荐的MySQL 8.0及以上版本,规避数据库语法兼容问题。
内容的提问来源于stack exchange,提问作者areanet_gmbh_schmid

