При выполнении миграций в контейнере Docker с БД MariaDB с использованием PHP фреймворка Yii2 возникают ошибки, такие как "MySQL server has gone away" и последующие сбои с сообщениями об ошибке в InnoDB.
- Ранее такой ошибки не было при тех же конфигурациях, она стала проявляться только в последнее время
- Проверено, что проблема проявляется на разных компьютерах других участников проекта
- Вероятней дело не в миграциях, ибо они выполняют простые запросы создания таблиц и некоторых записей в БД. Те же миграции без проблем срабатывали в OSPanel, рабочем и тестовом сервере. Пример миграции, на которой происходит ошибка:
https://dpaste.org/RygHY
- Обновлен с `mariadb:10.3.36` на `mariadb:10.3.39` — не помогло, ошибка осталась
- При использовании образа `image: mysql:5.7.39` — всё работает корректно
Вот примеры ошибок из логов:
1. При выполнении миграции:
Exception: SQLSTATE[HY000]: General error: 2006 MySQL server has gone away
Полный лог:
https://dpaste.org/UhMrn
2. Логи MariaDB показывают сбои, такие как:
InnoDB: Assertion failure in file /home/buildbot/buildbot/build/mariadb-10.3.39/storage/innobase/fil/fil0fil.cc line 962
Полный лог:
https://dpaste.org/jjRef
Файл docker-compose.yml:
version: '3.7'
services:
keystore_php:
build:
context: ./.docker
container_name: keystore_php
extra_hosts:
- host.docker.internal:host-gateway
ports:
- '8001:80'
volumes:
- ./.docker/php/conf.d/xdebug.ini:/usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
- ./:/var/www/html
user: "ubuntu"
networks:
- shared_network
depends_on:
- keystore_mysql
- keystore_rabbitmq
keystore_mysql:
image: mariadb:10.3.39
container_name: keystore_mysql
command: --default-authentication-plugin=mysql_native_password
volumes:
- ".docker/data/db:/var/lib/mysql"
environment:
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD:-keystore}
MYSQL_DATABASE: ${MYSQL_DATABASE:-keystore}
MYSQL_USER: ${MYSQL_USER:-keystore}
MYSQL_PASSWORD: ${MYSQL_PASSWORD:-keystore}
ports:
- '3336:3306'
networks:
- shared_network
keystore_rabbitmq:
build:
context: ./.docker/rabbitmq
container_name: keystore_rabbitmq
ports:
- "15675:15672"
configs:
- source: rabbitmq_conf
target: /etc/rabbitmq/conf.d/10-defaults.conf
healthcheck:
test: rabbitmq-diagnostics -q ping
interval: 30s
timeout: 10s
retries: 5
networks:
- shared_network
networks:
shared_network:
name: my_shared_network
configs:
rabbitmq_conf:
file: ./.docker/rabbitmq/10-defaults.conf-develop