Skip to content

fix(migrations): defensive checks for ms3_grid_fields table#271

Merged
biz87 merged 1 commit into
betafrom
fix/270-migration-defensive-checks
May 18, 2026
Merged

fix(migrations): defensive checks for ms3_grid_fields table#271
biz87 merged 1 commit into
betafrom
fix/270-migration-defensive-checks

Conversation

@Ibochkarev
Copy link
Copy Markdown
Member

Описание

Добавлены защитные проверки (defensive checks) во все seed-миграции таблицы ms3_grid_fields для предотвращения ошибки SQLSTATE[42S02]: Base table or view not found при установке MiniShop3.

Проблема:
При установке на чистый MODX или при повторной установке, миграции пытались вставить данные в таблицу ms3_grid_fields до её создания, что приводило к фатальной ошибке.

Решение:

  • Добавлена проверка hasTable() перед выполнением всех операций с таблицей
  • Добавлены idempotency-проверки для seed-миграций (проверка существующих данных)
  • Защищены методы down() от ошибок при отсутствии таблицы
  • Унифицировано получение table_prefix через getAdapter()->getOption('table_prefix') ?? ''

Затронутые миграции:

  • 20251127000002_seed_customers_grid_config.php
  • 20251204140000_seed_orders_grid_config.php
  • 20251215120000_seed_order_products_grid_config.php
  • 20251222120000_seed_deliveries_grid_config.php
  • 20251223130000_seed_vendors_grid_config.php
  • 20251231140000_seed_category_products_grid_config.php
  • 20260107120000_fix_orders_grid_filterable.php
  • 20260119220000_update_orders_grid_status_fields.php
  • 20260317120000_add_duplicate_publish_to_category_products_actions.php

Тип изменений

  • Исправление бага (non-breaking change)

Связанные Issues

Fixes #270

Как это было протестировано?

  • Ручное тестирование
  • Автоматические тесты (PHPStan, ESLint)

Конфигурация тестирования:

  • MiniShop3: текущая ветка
  • MODX: 3.x
  • PHP: 8.x

Чеклист

  • Код соответствует стилю проекта
  • Добавлены/обновлены комментарии в сложных местах
  • Изменения не ломают существующую функциональность
  • PHPStan проходит без новых ошибок
  • Обновлён CHANGELOG.md (для значимых изменений)

Дополнительные заметки

Issue было создано на основе комментария на modx.pro.

Add hasTable() checks to prevent SQLSTATE[42S02] errors during installation

when ms3_grid_fields table doesn't exist yet.

Fixes #270
@Ibochkarev Ibochkarev requested a review from biz87 May 18, 2026 07:21
@biz87 biz87 merged commit 7291257 into beta May 18, 2026
@biz87 biz87 deleted the fix/270-migration-defensive-checks branch May 18, 2026 11:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug] Migration failed: Table ms3_grid_fields does not exist

2 participants