Shopware 6.4.17.0配置数据库集群后出现500错误求助
解决Shopware 6.4.17.0数据库多集群配置后的500错误
问题定位
错误日志显示CustomFieldsSerializer.php第97行调用array_keys()时传入了null,说明查询自定义字段相关数据时返回了非预期的null值,大概率和从库数据同步或读写分离配置有关。
解决步骤
验证主从数据库同步状态
确认从库(sql02、sql03)与主库(sql01)的自定义字段相关表数据完全一致,重点检查以下表:custom_field custom_field_set custom_field_set_relation若从库缺少这些表的数据或数据不一致,先修复主从同步问题,确保从库完全同步主库数据。
完善读写分离配置
在.env中为从库添加会话变量配置,确保从库的SQL模式与主库一致:DATABASE_URL="mysql://xxxx:xxx@sql01:3306/xxx" DATABASE_REPLICA_0_URL="mysql://xxx:xxx@sql02:3306/xxx" DATABASE_REPLICA_1_URL="mysql://xxx:xxx@sql03:3306/xxx" DATABASE_REPLICA_0_OPTIONS="--session-variables=sql_mode=''" DATABASE_REPLICA_1_OPTIONS="--session-variables=sql_mode=''" SQL_SET_DEFAULT_SESSION_VARIABLES=0配置完成后清除并预热缓存:
bin/console cache:clear bin/console cache:warmup排查自定义字段数据完整性
登录主库执行以下SQL,检查自定义字段的config字段是否存在null值:SELECT id, config FROM custom_field WHERE config IS NULL;若存在null值的
config字段,修复该字段(补充合法的JSON配置)或删除对应的自定义字段后重新创建。临时禁用读写分离验证
注释掉.env中的DATABASE_REPLICA_*_URL配置,恢复单库模式,若错误消失则确认问题出在从库配置;若错误依然存在,需排查自定义字段本身的配置损坏问题。版本兼容性检查
Shopware 6.4.17.0存在读写分离相关的已知缺陷,可尝试升级到6.4.18.0及以上小版本,修复潜在的底层逻辑问题。
内容的提问来源于stack exchange,提问作者Marcin Kaczor
相关产品推荐
相关产品推荐

