Миграция Phinx SQLSTATE[42S01]: базовая таблица или представление уже существует:

Я хочу использовать Phinx для управления своей базой данных. У меня уже есть база данных с настройкой таблиц, поэтому я написал миграцию, чтобы отразить то, что уже есть. При тестировании из пустой базы данных все работает хорошо, но в заполненной базе данных я получаю ошибку SQLSTATE[42S01]: Base table or view already exists:.

Есть ли команда или конфигурация, которая скажет Phinx заполнить таблицу phinxlog, как если бы миграция была запущена ранее? Обратите внимание, что в таблицах в prod есть данные, поэтому удаление таблиц любым способом не сработает.

🤔 А знаете ли вы, что...
PHP можно использовать для создания API и веб-служб.


1
132
1

Ответ:

Решено

В ваших первоначальных миграциях вы можете проверить, существует ли уже таблица: https://book.cakephp.org/phinx/0/en/migrations.html#determining-whether-a-table-exists просто измените логику на if (!$exists). Это предполагает, что существующая таблица соответствует вашим миграциям, но похоже, что вы проверили это, и она должна заполнить таблицу phinxlog.

Если какая-либо из ваших новых миграций включает новые столбцы, а не только новые таблицы, вы также можете проверить, существуют ли столбцы, с помощью https://book.cakephp.org/phinx/0/en/migrations.html#checking-whether-a- столбец существует