如何将Shopware 6数据库配置从本地环境部署至生产环境?
解决Platform.sh上部署本地配置变更的问题
你遇到的问题核心是:这类自定义字段、客户角色、购物车数量限制的变更,大多存储在数据库里,而非单纯的框架配置文件,bin/console config:dump-reference只能导出Symfony的默认配置参考,自然无法覆盖这类业务数据变更。下面是具体解决步骤:
导出并固化数据库中的配置变更
先确认本地修改对应的数据库表(比如自定义字段可能在custom_fields表、客户角色对应customer_roles表、购物车设置对应shopping_cart_settings表):- 用SQL导出对应数据,比如:
也可以用DBeaver、phpMyAdmin这类工具导出数据的bin/console doctrine:query:sql "SELECT * FROM custom_fields"INSERT/UPDATE语句。 - 将变更转为Doctrine迁移文件:
- 运行
bin/console make:migration生成基础迁移文件,再编辑文件补充导出的SQL语句(建议加判断逻辑,比如INSERT ... ON DUPLICATE KEY UPDATE避免重复插入)。 - 也可以手动创建迁移文件,确保逻辑符合业务需求。
- 运行
- 用SQL导出对应数据,比如:
配置Platform.sh部署钩子自动执行迁移
在项目根目录的.platform.app.yaml中添加部署钩子,让平台每次部署时自动运行数据库迁移:hooks: deploy: | set -e bin/console doctrine:migrations:migrate --no-interaction确保所有变更文件纳入版本控制
- 将
src/Migrations/目录下的迁移文件添加到Git仓库,提交后推送到Platform.sh远程分支。 - 如果有自定义配置文件在
config/packages/目录下,也要确认这些文件已提交,不要遗漏。
- 将
验证部署结果
推送代码后,查看Platform.sh的部署日志确认迁移执行成功,再登录线上环境检查自定义字段、角色、购物车设置是否同步完成。
内容的提问来源于stack exchange,提问作者Mykhailo Gurei
相关产品推荐
相关产品推荐

